public function addLocale(Locale $locale) {
        $key = self::canonicalize($locale->getCode());

        if (isset($this->_locales[$key])) {
            return $this->_locales[$key];
        }

        // Configure and initialize
        foreach ($this->getResourcePaths() as $domain => $paths) {
            $locale->addResourcePaths($domain, $paths);
        }

        $locale->initialize();

        // Set the locale
        $this->_locales[$key] = $locale;

        // Set the parent as well
        if ($parent = $locale->getParentLocale()) {
            $this->addLocale($parent);
        }

        // Set fallback if none defined
        if (!$this->_fallback) {
            $this->setFallback($key);
        }

        return $locale;
    }