summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/translationaids/TranslationAid.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/translationaids/TranslationAid.php')
-rw-r--r--www/wiki/extensions/Translate/translationaids/TranslationAid.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/translationaids/TranslationAid.php b/www/wiki/extensions/Translate/translationaids/TranslationAid.php
new file mode 100644
index 00000000..a8068a34
--- /dev/null
+++ b/www/wiki/extensions/Translate/translationaids/TranslationAid.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Translation aid code.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+/**
+ * Multipurpose class for translation aids:
+ * - interface for translation aid classes
+ * - listing of available translation aids
+ *
+ * @defgroup TranslationAids Translation Aids
+ * @since 2013-01-01
+ */
+abstract class TranslationAid {
+ /**
+ * @var MessageGroup
+ */
+ protected $group;
+
+ /**
+ * @var MessageHandle
+ */
+ protected $handle;
+
+ /**
+ * @var IContextSource
+ */
+ protected $context;
+
+ /**
+ * @var TranslationAidDataProvider
+ */
+ protected $dataProvider;
+
+ public function __construct(
+ MessageGroup $group,
+ MessageHandle $handle,
+ IContextSource $context,
+ TranslationAidDataProvider $dataProvider
+ ) {
+ $this->group = $group;
+ $this->handle = $handle;
+ $this->context = $context;
+ $this->dataProvider = $dataProvider;
+ }
+
+ /**
+ * Translation aid class should implement this function. Return value should
+ * be an array with keys and values. Because these are used in the MediaWiki
+ * API, lists (numeric keys) should have key '**' set to element name that
+ * describes the list values. For example if the translation aid provides
+ * translation suggestions, it would return an array which has key '**' set
+ * to 'suggestion' and then list of arrays, each containing fields for the
+ * information of the suggestions. See InOtherLanguagesAid for example.
+ *
+ * @throws TranslationHelperException Used to signal unexpected errors to aid
+ * debugging
+ * @return array
+ */
+ abstract public function getData();
+
+ /**
+ * List of available message types mapped to the classes
+ * implementing them.
+ *
+ * @return array
+ */
+ public static function getTypes() {
+ $types = [
+ 'definition' => 'MessageDefinitionAid',
+ 'translation' => 'CurrentTranslationAid',
+ 'inotherlanguages' => 'InOtherLanguagesAid',
+ 'documentation' => 'DocumentationAid',
+ 'mt' => 'MachineTranslationAid',
+ 'definitiondiff' => 'UpdatedDefinitionAid',
+ 'ttmserver' => 'TTMServerAid',
+ 'support' => 'SupportAid',
+ 'gettext' => 'GettextDocumentationAid',
+ 'insertables' => 'InsertablesAid',
+ ];
+
+ return $types;
+ }
+}