RainLab\Translate\Models\Message::importMessageCodes PHP Method

importMessageCodes() public static method

Import an array of messages. Only known messages are imported.
public static importMessageCodes ( array $messages, string $locale = null ) : void
$messages array
$locale string
return void
    public static function importMessageCodes($messages, $locale = null)
    {
        if ($locale === null) {
            $locale = static::DEFAULT_LOCALE;
        }
        foreach ($messages as $code => $message) {
            // Ignore empties
            if (!strlen(trim($message))) {
                continue;
            }
            $code = self::makeMessageCode($code);
            $item = static::firstOrNew(['code' => $code]);
            // Do not import non-default messages that do not exist
            if (!$item->exists && $locale != static::DEFAULT_LOCALE) {
                continue;
            }
            $messageData = $item->exists || $item->message_data ? $item->message_data : [];
            // Do not overwrite existing translations
            if (isset($messageData[$locale])) {
                continue;
            }
            $messageData[$locale] = $message;
            $item->message_data = $messageData;
            $item->save();
        }
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Scans the theme configuration for defined messages
  * @return void
  */
 public function scanThemeConfigForMessages()
 {
     $theme = Theme::getActiveTheme();
     $config = $theme->getConfigArray('translate');
     if (!count($config)) {
         return;
     }
     $translator = Translator::instance();
     $keys = [];
     foreach ($config as $locale => $messages) {
         $keys = array_merge($keys, array_keys($messages));
     }
     Message::importMessages($keys);
     foreach ($config as $locale => $messages) {
         Message::importMessageCodes($messages, $locale);
     }
 }