summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/ttmserver/Interfaces.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/ttmserver/Interfaces.php')
-rw-r--r--www/wiki/extensions/Translate/ttmserver/Interfaces.php154
1 files changed, 154 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/ttmserver/Interfaces.php b/www/wiki/extensions/Translate/ttmserver/Interfaces.php
new file mode 100644
index 00000000..1f8cb20e
--- /dev/null
+++ b/www/wiki/extensions/Translate/ttmserver/Interfaces.php
@@ -0,0 +1,154 @@
+<?php
+/**
+ * TTMServer - The Translate extension translation memory interface
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2012-2013, Niklas Laxström
+ * @license GPL-2.0-or-later
+ * @ingroup TTMServer
+ */
+
+/**
+ * Interface for TTMServer that can be queried (=all of them).
+ * @ingroup TTMServer
+ * @since 2012-06-27
+ */
+interface ReadableTTMServer {
+ /**
+ * Fetches all relevant suggestions for given text.
+ *
+ * @param string $sourceLanguage language code for the provide text
+ * @param string $targetLanguage language code for the suggestions
+ * @param string $text the text for which to search suggestions
+ * @return array List: unordered suggestions, which each has fields:
+ * - source: String: the original text of the suggestion
+ * - target: String: the suggestion
+ * - context: String: title of the page where the suggestion comes from
+ * - quality: Float: the quality of suggestion, 1 is perfect match
+ */
+ public function query( $sourceLanguage, $targetLanguage, $text );
+
+ /**
+ * Determines if the suggestion returned by this TTMServer comes
+ * from this wiki or any other wiki.
+ * @param array $suggestion
+ * @return Bool
+ */
+ public function isLocalSuggestion( array $suggestion );
+
+ /**
+ * Given suggestion returned by this TTMServer, constructs fully
+ * qualified URL to the location of the translation.
+ * @param array $suggestion
+ * @return String URL
+ */
+ public function expandLocation( array $suggestion );
+}
+
+/**
+ * Interface for TTMServer that can be updated.
+ * @ingroup TTMServer
+ * @since 2012-06-27
+ */
+interface WritableTTMServer {
+ /**
+ * Shovels the new translation into translation memory.
+ * Use this for single updates (=after message edit).
+ * If no text is provided, entry will be removed from the translation
+ * memory.
+ *
+ * @param MessageHandle $handle
+ * @param string|null $targetText Use null to only delete.
+ */
+ public function update( MessageHandle $handle, $targetText );
+
+ /**
+ * Called when starting to fill the translation memory.
+ * Set up necessary variables and remove old content
+ * from the server.
+ */
+ public function beginBootstrap();
+
+ /**
+ * Called before every batch (MessageGroup).
+ */
+ public function beginBatch();
+
+ /**
+ * Called multiple times per batch if necessary.
+ *
+ * @param array $batch
+ */
+ public function batchInsertDefinitions( array $batch );
+
+ /**
+ * Called multiple times per batch if necessary.
+ *
+ * @param array $batch
+ */
+ public function batchInsertTranslations( array $batch );
+
+ /**
+ * Called before every batch (MessageGroup).
+ */
+ public function endBatch();
+
+ /**
+ * Do any cleanup, optimizing etc.
+ */
+ public function endBootstrap();
+
+ /**
+ * Get the list of services to duplicate writes to make them "mirrors"
+ * of this service.
+ *
+ * @since 2017.04
+ * @return string[]
+ */
+ public function getMirrors();
+
+ /**
+ * Check if the service is frozen, attempting to write to
+ * a frozen service may lead to errors or unexpected behaviors.
+ *
+ * @since 2017.04
+ * @return bool true if the service is frozen
+ */
+ public function isFrozen();
+}
+
+/**
+ * Interface for TTMServer that can act as backend for translation search.
+ * @ingroup TTMServer
+ * @since 2014.04
+ */
+interface SearchableTTMServer {
+ /**
+ * Performs a search in the translation database.
+ *
+ * @param string $queryString String to search for.
+ * @param array $opts Query options like language.
+ * @param array $highlight Tags for highlighting.
+ * @return mixed Result set
+ */
+ public function search( $queryString, $opts, $highlight );
+
+ /**
+ * @param stdClass $resultset
+ * @return array[]
+ */
+ public function getFacets( $resultset );
+
+ /**
+ * @param stdClass $resultset
+ * @return int
+ */
+ public function getTotalHits( $resultset );
+
+ /**
+ * @param stdClass $resultset
+ * @return array[]
+ */
+ public function getDocuments( $resultset );
+}