Skip to content
wiki.fftac.org

Antichrist Message Board - Source Excerpt 11

Back to Antichrist Message Board

Summary

This source excerpt preserves a bounded section of Antichrist.net/wp-content/plugins/antichrist-message-board/antichrist-message-board.php so readers can inspect the evidence without opening the full source file.

**Source path:** Antichrist.net/wp-content/plugins/antichrist-message-board/antichrist-message-board.php

'acnmb.error.locale_mismatch'    => 'Ce sujet appartient a un forum dans une autre langue.',
		'acnmb.status.login_required'    => 'Connectez-vous avant de publier.',
		'acnmb.status.title_required'    => 'Ajoutez un titre plus clair.',
		'acnmb.status.message_required'  => 'Ajoutez un message avant de publier.',
		'acnmb.status.category_required' => 'Choisissez une categorie du forum.',
		'acnmb.status.rate_limited'      => 'Veuillez attendre un moment avant de publier de nouveau.',
		'acnmb.status.reply_created'     => 'Reponse publiee.',
		'acnmb.status.topic_locked'      => 'Ce sujet est verrouille.',
		'acnmb.status.locale_mismatch'   => 'Cette discussion appartient a un forum dans une autre langue.',
	);

	foreach ( $zh_strings as $key => $value ) {
		if ( isset( $strings[ $key ] ) ) {
			$strings[ $key ]['zh'] = $value;
		}
	}

	foreach ( $fr_strings as $key => $value ) {
		if ( isset( $strings[ $key ] ) ) {
			$strings[ $key ]['fr'] = $value;
		}
	}

	return $strings;
}

/**
 * Write a generated dictionary file, replacing stale generated copies when needed.
 *
 * @param string $file Dictionary path.
 * @param array  $data Dictionary payload.
 */
function acnmb_write_dictionary_file( $file, array $data ) {
	$json = wp_json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );
	if ( false !== @file_put_contents( $file, $json ) ) {
		return;
	}

	if ( file_exists( $file ) ) {
		@chmod( $file, 0666 );
		@unlink( $file );
	}

	@file_put_contents( $file, $json );
}

/**
 * Merge board strings into locale-router dictionaries at runtime.
 *
 * @param array  $dictionary Runtime dictionary.
 * @param string $locale Locale tag.
 * @return array
 */
function acnmb_merge_runtime_dictionary_strings( $dictionary, $locale ) {
	if ( ! is_array( $dictionary ) ) {
		$dictionary = array();
	}
	if ( empty( $dictionary['meta'] ) || ! is_array( $dictionary['meta'] ) ) {
		$dictionary['meta'] = array();
	}
	if ( empty( $dictionary['strings'] ) || ! is_array( $dictionary['strings'] ) ) {
		$dictionary['strings'] = array();
	}

	foreach ( acnmb_translation_strings() as $key => $pair ) {
		$dictionary['strings'][ $key ] = acnmb_translation_value_for_locale( $pair, $locale );
	}

	$dictionary['meta']['locale']       = acnmb_normalize_locale_tag( $locale );
	$dictionary['meta']['keyMode']      = 'runtime-key';
	$dictionary['meta']['sourceLocale'] = 'en-US';

	return $dictionary;
}

/**
 * Write UAIX and legacy NS12 runtime dictionaries for message-board strings.
 */
function acnmb_write_ns12_dictionaries() {
	$upload_dir = wp_upload_dir();
	if ( empty( $upload_dir['basedir'] ) ) {
		return;
	}

	$strings = acnmb_translation_strings();
	$payloads = array();

	foreach ( acnmb_required_locale_tags() as $locale ) {
		$payloads[ $locale ] = array();
	}

	foreach ( $strings as $key => $pair ) {
		foreach ( array_keys( $payloads ) as $locale ) {
			$payloads[ $locale ][ $key ] = acnmb_translation_value_for_locale( $pair, $locale );
		}
	}

	$dictionary_dirs = array(
		trailingslashit( $upload_dir['basedir'] ) . 'uaix-locale-router/dictionaries',
		trailingslashit( $upload_dir['basedir'] ) . 'ns12-locale-router/dictionaries',
	);

	foreach ( $dictionary_dirs as $dir ) {
		wp_mkdir_p( $dir );
		if ( ! is_dir( $dir ) || ! is_writable( $dir ) ) {
			continue;
		}

		foreach ( $payloads as $locale => $locale_strings ) {
			$file = trailingslashit( $dir ) . $locale . '.json';
			$data = array(
				'meta'    => array(
					'locale'        => $locale,
					'version'       => 1,
					'fallback'      => 'en-US',
					'generatedFrom' => 'antichrist-message-board',
					'keyMode'       => 'runtime-key',
					'sourceLocale'  => 'en-US',
				),
				'strings' => array(),
			);

			if ( file_exists( $file ) ) {
				$existing = json_decode( (string) file_get_contents( $file ), true );
				if ( is_array( $existing ) ) {
					$data = wp_parse_args( $existing, $data );
					if ( empty( $data['strings'] ) || ! is_array( $data['strings'] ) ) {
						$data['strings'] = array();
					}
					if ( empty( $data['meta'] ) || ! is_array( $data['meta'] ) ) {
						$data['meta'] = array();
					}
				}
			}

			$data['meta']['locale']       = $locale;
			$data['meta']['keyMode']      = 'runtime-key';
			$data['meta']['sourceLocale'] = 'en-US';
			$data['strings']             = array_merge( $data['strings'], $locale_strings );
			acnmb_write_dictionary_file( $file, $data );
		}
	}

	if ( class_exists( '\UAIXLocaleRouter\DictionaryRepository' ) ) {
		foreach ( array_keys( $payloads ) as $locale ) {
			\UAIXLocaleRouter\DictionaryRepository::clear_cache( $locale );
		}
	}

	if ( class_exists( '\Ns12LocaleRouter\DictionaryRepository' ) ) {
		foreach ( array_keys( $payloads ) as $locale ) {
			\Ns12LocaleRouter\DictionaryRepository::clear_cache( $locale );
		}
	}
}