aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/commerceguys/intl/src/Language
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/commerceguys/intl/src/Language')
-rw-r--r--vendor/commerceguys/intl/src/Language/Language.php91
-rw-r--r--vendor/commerceguys/intl/src/Language/LanguageEntityInterface.php24
-rw-r--r--vendor/commerceguys/intl/src/Language/LanguageInterface.php23
-rw-r--r--vendor/commerceguys/intl/src/Language/LanguageRepository.php115
-rw-r--r--vendor/commerceguys/intl/src/Language/LanguageRepositoryInterface.php41
5 files changed, 294 insertions, 0 deletions
diff --git a/vendor/commerceguys/intl/src/Language/Language.php b/vendor/commerceguys/intl/src/Language/Language.php
new file mode 100644
index 000000000..9958d5481
--- /dev/null
+++ b/vendor/commerceguys/intl/src/Language/Language.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+class Language implements LanguageEntityInterface
+{
+ /**
+ * 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/vendor/commerceguys/intl/src/Language/LanguageEntityInterface.php b/vendor/commerceguys/intl/src/Language/LanguageEntityInterface.php
new file mode 100644
index 000000000..e36e0bf77
--- /dev/null
+++ b/vendor/commerceguys/intl/src/Language/LanguageEntityInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+interface LanguageEntityInterface extends LanguageInterface
+{
+ /**
+ * Sets the two-letter language code.
+ *
+ * @param string $languageCode The two-letter language code.
+ *
+ * @return self
+ */
+ public function setLanguageCode($languageCode);
+
+ /**
+ * Sets the language name.
+ *
+ * @param string $name The language name.
+ *
+ * @return self
+ */
+ public function setName($name);
+}
diff --git a/vendor/commerceguys/intl/src/Language/LanguageInterface.php b/vendor/commerceguys/intl/src/Language/LanguageInterface.php
new file mode 100644
index 000000000..14c603dfd
--- /dev/null
+++ b/vendor/commerceguys/intl/src/Language/LanguageInterface.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+interface LanguageInterface
+{
+ /**
+ * Gets the two-letter language code.
+ *
+ * @return string
+ */
+ public function getLanguageCode();
+
+ /**
+ * 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();
+}
diff --git a/vendor/commerceguys/intl/src/Language/LanguageRepository.php b/vendor/commerceguys/intl/src/Language/LanguageRepository.php
new file mode 100644
index 000000000..4fc02f2ff
--- /dev/null
+++ b/vendor/commerceguys/intl/src/Language/LanguageRepository.php
@@ -0,0 +1,115 @@
+<?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 = [];
+
+ /**
+ * 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($languageCode, $definitions[$languageCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $languages = [];
+ foreach ($definitions as $languageCode => $definition) {
+ $languages[$languageCode] = $this->createLanguageFromDefinition($languageCode, $definition, $locale);
+ }
+
+ return $languages;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getList($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $list = [];
+ foreach ($definitions as $languageCode => $definition) {
+ $list[$languageCode] = $definition['name'];
+ }
+
+ return $list;
+ }
+
+ /**
+ * 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 string $languageCode The language code.
+ * @param array $definition The language definition.
+ * @param string $locale The locale of the language definition.
+ *
+ * @return Language
+ */
+ protected function createLanguageFromDefinition($languageCode, array $definition, $locale)
+ {
+ $language = new Language();
+ $setValues = \Closure::bind(function ($languageCode, $definition, $locale) {
+ $this->languageCode = $languageCode;
+ $this->name = $definition['name'];
+ $this->locale = $locale;
+ }, $language, '\CommerceGuys\Intl\Language\Language');
+ $setValues($languageCode, $definition, $locale);
+
+ return $language;
+ }
+}
diff --git a/vendor/commerceguys/intl/src/Language/LanguageRepositoryInterface.php b/vendor/commerceguys/intl/src/Language/LanguageRepositoryInterface.php
new file mode 100644
index 000000000..dd14250e0
--- /dev/null
+++ b/vendor/commerceguys/intl/src/Language/LanguageRepositoryInterface.php
@@ -0,0 +1,41 @@
+<?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 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 languages implementing the LanguageInterface,
+ * keyed by language code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns a list of languages.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of language names, keyed by language code.
+ */
+ public function getList($locale = null, $fallbackLocale = null);
+}