{"id":24440090,"url":"https://github.com/mivek/metarparser","last_synced_at":"2026-05-31T13:00:40.939Z","repository":{"id":27602502,"uuid":"114567190","full_name":"mivek/MetarParser","owner":"mivek","description":"A java program decoding metar and taf","archived":false,"fork":false,"pushed_at":"2026-05-27T21:30:35.000Z","size":6801,"stargazers_count":52,"open_issues_count":10,"forks_count":32,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-27T22:21:26.440Z","etag":null,"topics":["aeronautics","airport","hacktoberfest","icao","java","metar","metar-decoder","taf","weather"],"latest_commit_sha":null,"homepage":"https://www.metar-taf-decoder.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mivek.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"mivek"}},"created_at":"2017-12-17T20:42:00.000Z","updated_at":"2026-05-27T21:28:46.000Z","dependencies_parsed_at":"2023-10-16T09:28:31.323Z","dependency_job_id":"36d433a0-2523-4101-a4ca-c88913a3364c","html_url":"https://github.com/mivek/MetarParser","commit_stats":null,"previous_names":[],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/mivek/MetarParser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2FMetarParser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2FMetarParser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2FMetarParser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2FMetarParser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mivek","download_url":"https://codeload.github.com/mivek/MetarParser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2FMetarParser/sbom","scorecard":{"id":650679,"data":{"date":"2025-08-11","repo":{"name":"github.com/mivek/MetarParser","commit":"91f19fb5567728469fef5d321c1dfb712d1d0cc6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:22","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/lint-pr.yml:12","Warn: no topLevel permission defined: .github/workflows/maven-verify.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/release.yml:9","Warn: no topLevel permission defined: .github/workflows/validate-commit.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/codeql.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/comment-pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/comment-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint-pr.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/lint-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-verify.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/maven-verify.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate-commit.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/validate-commit.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/validate-commit.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/mivek/MetarParser/validate-commit.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/release.yml:41","Warn: npmCommand not pinned by hash: .github/workflows/validate-commit.yml:19","Warn: npmCommand not pinned by hash: .github/workflows/validate-commit.yml:20","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:12"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":10,"reason":"SAST tool detected","details":["Info: SAST configuration detected: CodeQL","Info: SAST configuration detected: Sonar","Info: all commits (26) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-x4c5-c7rf-jjgv","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T13:26:32.802Z","repository_id":27602502,"created_at":"2025-08-21T13:26:32.802Z","updated_at":"2025-08-21T13:26:32.802Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33731998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aeronautics","airport","hacktoberfest","icao","java","metar","metar-decoder","taf","weather"],"created_at":"2025-01-20T20:28:18.030Z","updated_at":"2026-05-31T13:00:40.933Z","avatar_url":"https://github.com/mivek.png","language":"Java","funding_links":["https://ko-fi.com/mivek","https://ko-fi.com/B0B15BGU6"],"categories":[],"sub_categories":[],"readme":"[![Maven verify](https://github.com/mivek/MetarParser/actions/workflows/maven-verify.yml/badge.svg)](https://github.com/mivek/MetarParser/actions/workflows/maven-verify.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mivek_MetarParser\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=mivek_MetarParser)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mivek_MetarParser\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=mivek_MetarParser)[![GitHub license](https://img.shields.io/github/license/mivek/MetarParser.svg)](https://github.com/mivek/MetarParser/blob/main/LICENSE)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.mivek/metarParser.svg)](https://search.maven.org/artifact/io.github.mivek/metarParser/)\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B15BGU6)\n# MetarParser\n\nThis java lib provides a Metar and TAF decoder.\n\n## Table of content\n\n1.  [Adding dependency](#adding-the-dependency)\n2.  [Model](#model)\n    1.  [Enumerations](#enumerations)\n    2.  [Classes](#classes)\n3.  [Examples](#examples)\n    1.  [Parse a metar](#parse-a-metar)\n    2.  [Retrieve a metar](#retrieve-the-metar-of-an-airport)\n    3.  [Parse a taf](#parse-a-taf)\n    4.  [Retrieve a taf](#retrieve-a-taf)\n4.  [Internationalization](#internationalization)\n\n## Architecture of the project\n\nThis project is divided into multiple maven module\n\n-   metarParser-entities: Contains the model and the enumerations\n-   metarParser-parsers: Contains the parsers and the commands\n-   metarParser-services: Contains a service allowing you to parse or retrieve METAR and TAF\n-   metarParser-spi: Contains the SPI \n-   metarParser-commons: Contains utility and internationalization classes\n\n## Adding the dependency\n\nTo add the service module :\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.mivek\u003c/groupId\u003e\n  \u003cartifactId\u003emetarParser-services\u003c/artifactId\u003e\n  \u003cversion\u003elatest\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nOr check [here](https://search.maven.org/artifact/io.github.mivek/metarParser/) if you are not using maven.\n\n## Model\n\nThe class diagrams are generated by IntelliJ\nWhen updating classes, regenerate the diagrams and save the images in the project.\n![class diagram](model.png)\n\n### Enumerations\n\nThe application contains numerous enumerations to represent data.\n\n- CloudType: Represents the type of cloud.\n- CloudQuantity: Represents the amount of clouds.\n- DepositBrakingCapacity: Represents the breaking capacity on a runway.\n- DepositCoverage: Represents the percentage of a runway covered by deposit.\n- DepositThickness: Represents the thickness of a deposit on a runway.\n- DepositType: Represents the type of deposit on a runway.\n- DepositType: Represents the type of deposit on a runway.\n- Descriptive: Represents the description of a meteorological phenomenon.\n- Flag: Represents a flag applied to a METAR or TAF: AMD, AUTO, CNL, COR or NIL.\n- IcingIntensity: Represents the intensity of an icing element.\n- Intensity: Represents the intensity of a meteorological phenomenon.\n- Phenomenon: Represents a phenomenon.\n- RunwayInfoIndicator: Represents the indicator on a runway.\n- RunwayInfoTrend: Represents the visibility trend on a runway.\n- TimeIndicator: Represents the time of the trend.\n- TurbulenceIntensity: Represents the intensity of a turbulence\n- WeatherChangeType: Represents a type of trend.\n\n### Classes\n\n#### Airport\n\nThe airport class is composed of\n\n-   Name\n-   City\n-   Country\n-   IATA code\n-   ICAO code\n-   latitude\n-   longitude\n-   altitude\n-   timezone\n    Note: Depending on the source for the airports, fields can be null\n\n#### Cloud\n\nIn this application a cloud is composed of \n\n-   CloudQuantity\n-   CloudType (optional)\n-   height (optional)\n\n#### Country\n\nA country is represented by its name.\n\n#### Icing\n\nThe icing are only available in TAF and in TAFTrends.\nIt is composed of \n\n- The icing intensity\n- The base height\n- The layer's depth\n\n#### Runway information\n\nThe runway information can represent either a visual range or a deposit.\n\nIf the object represents a visual range the field `minRange` is non-null.\n\nThe runway information is composed of \n\n-   The name of the runway\n-   The minimal visibility on the runway (optional)\n-   The indicator of the visual range. Either \"greater than\", \"less than\" or empty. (optional)    \n-   The maximal visibility on the runway (optional)\n-   The trend of the visibility (optional)\n-   The type of deposit (optional)\n-   The percentage of coverage on the runway\n-   The thickness of the deposit.\n-   The braking capacity on the runway.\n\n#### Turbulence\n\nThe turbulence are only available in TAF and in TAFTrends.\nIt is composed of:\n\n- The turbulence intensity\n- The base height\n- The layer's depth\n\n#### Visibility\n\nThe visibility class is composed of\n\n-   The main visibility\n-   The minimal visibility (optional)\n-   The direction of the minimal visibility (optional)\n\n#### WeatherCondition\n\nThe weather condition is class to represent a meteorological phenomenon.\nA weather condition is composed of \n\n-   an intensity (optional)\n-   a descriptive (optional)\n-   a list of phenomenon\n\n#### Wind\n\nThe wind class is composed of \n\n-   the speed\n-   the direction\n-   the speed of the gust\n-   the minimal wind variation in degrees\n-   the maximal wind variation in degrees\n-   the unit of the wind's speed\n\n#### WindShear\n\nThis class is a subclass of Wind.\nIt is composed of\n\n-   the height of the wind shear.\n\n### Trends\n\n![trends diagram](trend.png)\n\nBoth METAR and TAF objects have a list of `trends`.\nFor the METAR object the `MetarTrend` represents the trend.\nFor TAF object the trends can be `FMTafTrend`, `TafTrend` and `TafProbTrend`.\nIt is possible to get a specific type of Trend for TAF with methods:\n- getBECMGs\n- getFMs\n- getProbs\n- getTempos\n- getInters\n\nTrends inherit from `AbstractWeatherContainer` so they have the following fields:\n- a wind\n- a windshear\n- a visibility and vertical visibility\n- a list of clouds\n- a list of weather conditions\n- a Remark\n\n## Airports loading\n\nBy default, airports are loaded from the temporary file [airport.dat](metarParser-spi/src/main/resources/data/airports.dat)\nIt is possible to provide your own source of airports via spi.\nSee [spi](metarParser-spi/README.md) module for details. \n\n## Examples\n\n### Parse a metar\n\nInstantiate the metarFacade and use its method parse.\n\n```java\nString code = \"LFPG 131830Z 19005KT 170V250 9999 -SHRA FEW040TCU SCT086 16/08 Q1011\";\nMetarService service = MetarService.getInstance();\nMetar metar = service.decode(code);\n```\n\n### Retrieve the metar of an airport\n\nInstantiate the metarFacade.\nUse the MetarService and its method retrieveFromAirport with the ICAO code of the airport.\n\n```java\nString icao = \"LFPG\";\nMetarService service = MetarService.getInstance();\nMetar metar = service.retrieveFromAirport(icao);\n```\n\n### Parse a taf\n\nUse the TAFFacade to decode the taf.\n\n```java\nString message = \"TAF LFPG 150500Z 1506/1612 17005KT 6000 SCT012 \\n\" \n                  +\"TEMPO 1506/1509 3000 BR BKN006 PROB40 \\n\"\n                  +\"TEMPO 1506/1508 0400 BCFG BKN002 PROB40 \\n\"\n                  +\"TEMPO 1512/1516 4000 -SHRA FEW030TCU BKN040 \\n\" \n                  +\"BECMG 1520/1522 CAVOK \\n\"\n                  +\"TEMPO 1603/1608 3000 BR BKN006 PROB40 \\n\"\n                  +\"TEMPO 1604/1607 0400 BCFG BKN002 TX17/1512Z TN07/1605Z\";\nTAFService service = TAFService.getInstance();\nTAF taf = service.decode(message);\n```\n\nLines of the message have to be separated by a \"\\\\n\" character.\n\n### Retrieve a taf\n\nUse the TAFFacade and the method retrieveFromAirport with the ICAO code of the airport.\n\n```java\nString icao = \"LFPG\";\nTAFService service = TAFService.getInstance();\nTAF taf = service.retrieveFromAirport(icao);\n```\n\n### Internationalization\n\nThe default locale is english.\nThe following locales are also available in the project but may not be fully translated:\n- French\n- German\n- Italian\n- Polish\n- Russian\n- simplified chinese\n- Spanish\n- Turkish\n\n#### Change the locale and contributing\n\nTo change the locale use the method `setLocale(Locale)` of the class `Messages.java`\n\n```(java)\nMessages.getInstance().setLocale(Locale.FRENCH); // Changes the locale to french.\n```\n\nIf you are willing to add a new locale or contribute to the project please see [Contributing.md file](CONTRIBUTING.md).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmivek%2Fmetarparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmivek%2Fmetarparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmivek%2Fmetarparser/lists"}