aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/commerceguys/intl/src/Language/Language.php
blob: d8196f26c0a597156e659761499dbe13e9afb184 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php

namespace CommerceGuys\Intl\Language;

/**
 * Represents a language.
 */
final class Language
{
    /**
     * The two-letter language code.
     *
     * @var string
     */
    protected $languageCode;

    /**
     * The language name.
     *
     * @var string
     */
    protected $name;

    /**
     * The locale (i.e. "en-US").
     *
     * @var string
     */
    protected $locale;

    /**
     * Creates a new Language instance.
     *
     * @param array $definition The definition array.
     */
    public function __construct(array $definition)
    {
        foreach (['language_code', 'name', 'locale'] as $requiredProperty) {
            if (empty($definition[$requiredProperty])) {
                throw new \InvalidArgumentException(sprintf('Missing required property "%s".', $requiredProperty));
            }
        }

        $this->languageCode = $definition['language_code'];
        $this->name = $definition['name'];
        $this->locale = $definition['locale'];
    }

    /**
     * Returns the string representation of the Language.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->languageCode;
    }

    /**
     * Gets the two-letter language code.
     *
     * @return string
     */
    public function getLanguageCode()
    {
        return $this->languageCode;
    }

    /**
     * Gets the language name.
     *
     * This value is locale specific.
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Gets the locale.
     *
     * The language name is locale specific.
     *
     * @return string
     */
    public function getLocale()
    {
        return $this->locale;
    }
}