- Add Logger to Slim application to log to Friendica log file
- Show more specific error message when rule syntax check fails
- Align editorconfig with Composer style
- Add minimum PHP version to composer.json
Among other things, I use the page header to inform about current maintenance work or other upcoming work. The information should therefore be provided within an appropriate framework. With a little CSS, the page header gets a frame in green. The font was adjusted to an appropriate size.
This Addon based on webrtc. Audon is a service of realtime audio chat.
With small changes, the WebRTC addon could be adapted to Audon so that it can be loaded into an iframe. In the ifram, the Friendica handle can be connected and a room opened. Audio conversations between Friendica users are possible.
https://github.com/friendica/friendica-addons/pull/1357
By default, the z-index of the toggle button is above the z-index of the sidebar on mobile devices. This fix tweaks the z-index so that it remains below the sidebar while it's open.
* imgages in body-attach with title / alt attribute get them removed while adding fancy attributes
* Added fancybox to image inlined in posts. Un-hooked the old lightbox from frio and vier and excahnged that with fancybox hooks.
* Excluded images in "type-link" divs from being "fancied" as they have no images but pages linked to.
This addon loads all media attachments of a post into a "fancybox" instead of linking directly to the media.
Each post gets its own attachment library, when there are more than one media attached you can scroll through them.
`Hook::register` now takes a string as the second parameter, not an array. Without this change Friendica fails to start, with errors such as:
```
2022-11-07T11:40:20Z index [ERROR]: Uncaught Exception TypeError: "Argument 2 passed to piwik_analytics() must be of the type array, string given, called in /var/www/html/src/Core/Hook.php on line 223" at /var/www/html/addon/piwik/piwik.php line 53 {"exception":"TypeError: Argument 2 passed to piwik_analytics() must be of the type array, string given, called in /var/www/html/src/Core/Hook.php on line 223 and defined in /var/www/html/addon/piwik/piwik.php:53\nStack trace:\n#0 /var/www/html/src/Core/Hook.php(223): piwik_analytics(Object(Friendica\\App), '<h1><img width=...')\n#1 /var/www/html/src/Core/Hook.php(198): Friendica\\Core\\Hook::callSingle(Object(Friendica\\App), 'page_end', Array, '<h1><img width=...')\n#2 /var/www/html/src/App/Page.php(493): Friendica\\Core\\Hook::callAll('page_end', '<h1><img width=...')\n#3 /var/www/html/src/App.php(722): Friendica\\App\\Page->run(Object(Friendica\\App), Object(Friendica\\App\\BaseURL), Object(Friendica\\App\\Arguments), Object(Friendica\\App\\Mode), Object(GuzzleHttp\\Psr7\\Response), Object(Friendica\\Core\\L10n), Object(Friendica\\Util\\Profiler), Object(Friendica\\Core\\Config\\Type\\JitConfig), Object(Friendica\\Core\\PConfig\\Type\\JitPConfig))\n#4 /var/www/html/index.php(44): Friendica\\App->runFrontend(Object(Friendica\\App\\Router), Object(Friendica\\Core\\PConfig\\Type\\JitPConfig), Object(Friendica\\Security\\Authentication), Object(Friendica\\App\\Page), Object(Friendica\\Util\\HTTPInputData), 1667821218.5153)\n#5 {main}"} - {"file":null,"line":null,"function":null,"uid":"73d499","process_id":52}
```
The Windows Phone app for Friendica does not seem to exist anymore (see https://www.microsoft.com/store/p/friendica-mobile/9nblggh0fhmn) which was linked from a promo video as store location. So lets set it to unsupported and deprecate it once 2022.09 was released.
The webdav_storage addon should check whether it should provide its
config options and its instance based on the provided `$data['name']`.
Not doing this will override the configuration and instance of another
storage add-on.
- $moduleName is part of the argument string => App\Arguments
- $isBackend boolean already part of App\Mode::isBackend()
- $module is now the direct return of App\Router::getModule()
- ModuleController::run() moved to BaseModule::run()
Remaining caveat: Comments posted on Twitter and imported in Friendica do not trigger any Notifier task, possibly because they are private to the user and don't require any remote deletion notifications sent. Comments posted on Friendica and mirrored on Twitter trigger the Notifier task and the Twitter counter-part will be deleted accordingly.
Thanks to the work of طاهر, Farida Khalaf, محمد أحمد, abidin toumi, Abdullah Alsabi, ButterflyOfFire and ominds the translation of Friendica into Arabic has crossed the magic 50% progress mark, so we now include their work into the addons repository.
This enables the addon to also replace links in the attached preview with the
Nitter server. **BUT** it requires the addon to be reloaded manually by the
nodes admin.
- Now that each addon form is in their own form tag, we have to check whether the addon submit button was pressed.
- This was already done in every other addon but mailstream and this change will prevent unexpected loss of mailstream settings when saving any other addon settings.
Treansfering the addon from the separate repository into the projects addon collection.
This addon is meant to replace links to Twitter in the body of postings with a nitter [1] instance of the admins choice. It is not meant to change links to contact prociles.
In addition to the change, a note about the changed links is placed at the bottom of the posting.
1: https://github.com/zedeus/nitter
- Move HTML in template file
- Use standard form fields
- Hide irrelevant fields depending on the connector status (disabled, enabled, error)
- Add notice messages on settings submit
- Use explicit root path for template engine
- Replace "__DIR__" calls in addons with subdirectories
- Fixes local tests, where call is made out of '/' and not '/vagrant/'
- withSession() - for auto authentication with Session/Cookie variables
- withOpenId() - for authentication with an OpenID account
- withPassword() - for authentication with Password
- setForUser() - for setting the user auth context of the current session
Refactor "Session" class - contains now "native" Session Management methods
2019-12-03 22:29:36 +01:00
4037 changed files with 195730 additions and 222332 deletions
@ -6,22 +6,24 @@ You can add these addons to the /addon directory of your Friendica installation
After uploading the addons to your server, you need to activate the desired addons in the Admin panel. Addons not activated have no effect on your node.
You can find more addons in the [Friendica Addon listing](https://addons.friendi.ca) in cases the addon developers have choosen not to include them here.
## Issues
Please report any issues you have with addons of Friendica from this repository in [the main issue tracker of the project](https://github.com/friendica/friendica/issues).
## Connectors
Among these addons there are also the [connectors](https://github.com/friendica/friendica/blob/master/doc/Connectors.md) for various other networks (e.g. Twitter, pump.io, Google+) that are needed for communication when the protocol is not supported by Friendica core (DFRN, OStatus and Diaspora).
Among these addons there are also the [connectors](https://github.com/friendica/friendica/blob/stable/doc/Connectors.md) for various other networks (e.g. Twitter, pump.io, Google+) that are needed for communication when the protocol is not supported by Friendica core (DFRN, OStatus and Diaspora).
For communication with contacts in networks supporting those (e.g. GNU social, Diaspora and red#matrix) you just need to access the page configuration in the Admin panel and enable them. For networks where communication is only possible the API access to a remote account, you need to activate the fitting connectors.
## Development
The addon interface of Friendica is very flexible and powerful, so if you are missing functionality, your chances are high it may be added with an addon.
See the [documentation](https://github.com/friendica/friendica/blob/master/doc/Addons.md) for more information on the addon development.
See the [documentation](https://github.com/friendica/friendica/blob/stable/doc/Addons.md) for more information on the addon development.
## Translation
Addons can be translated like any other part of Friendica.
Translation for addons is done at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/).
Read more about the workflow in the [Friendica translation documentation](https://github.com/friendica/friendica/blob/master/doc/translations.md#addon).
Read more about the workflow in the [Friendica translation documentation](https://github.com/friendica/friendica/blob/stable/doc/translations.md#addon).
'backtosettings'=>L10n::t('Back to Addon Settings'),
'title'=>L10n::t('Advanced Content Filter'),
'add_a_rule'=>L10n::t('Add a Rule'),
'help'=>L10n::t('Help'),
'intro'=>L10n::t('Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'),
'your_rules'=>L10n::t('Your rules'),
'no_rules'=>L10n::t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
'disabled'=>L10n::t('Disabled'),
'enabled'=>L10n::t('Enabled'),
'disable_this_rule'=>L10n::t('Disable this rule'),
'enable_this_rule'=>L10n::t('Enable this rule'),
'edit_this_rule'=>L10n::t('Edit this rule'),
'edit_the_rule'=>L10n::t('Edit the rule'),
'save_this_rule'=>L10n::t('Save this rule'),
'delete_this_rule'=>L10n::t('Delete this rule'),
'rule'=>L10n::t('Rule'),
'close'=>L10n::t('Close'),
'addtitle'=>L10n::t('Add new rule'),
'rule_name'=>L10n::t('Rule Name'),
'rule_expression'=>L10n::t('Rule Expression'),
'cancel'=>L10n::t('Cancel'),
'backtosettings'=>DI::l10n()->t('Back to Addon Settings'),
'intro'=>DI::l10n()->t('Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'),
'your_rules'=>DI::l10n()->t('Your rules'),
'no_rules'=>DI::l10n()->t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
'disabled'=>DI::l10n()->t('Disabled'),
'enabled'=>DI::l10n()->t('Enabled'),
'disable_this_rule'=>DI::l10n()->t('Disable this rule'),
'enable_this_rule'=>DI::l10n()->t('Enable this rule'),
'edit_this_rule'=>DI::l10n()->t('Edit this rule'),
'edit_the_rule'=>DI::l10n()->t('Edit the rule'),
'save_this_rule'=>DI::l10n()->t('Save this rule'),
'delete_this_rule'=>DI::l10n()->t('Delete this rule'),
@ -34,6 +34,14 @@ If the expression using a post variables returns `true`, the post will be collap
A post will be collapsed if at least one rule matches, but all matching rule names will be displayed above the collapsed content.
## Examples
1. Collapse posts with specific domains `body matches "/\\.example\\.com/"`
2. Collapse posts that contains the words `body matches "/Guten Morgen/"`
3. Collapse posts with the word facebook that have a space in front and after the word `body matches "//s facebook/s /"`
4. Collapse posts that contains more than 1 image `body matches "/(?:(?:(?:\\[url(?:=.*)?\\])?\\[img(?:=.*)?\\].*\\[\\/img\\]\\s*(?:\\[\\/url\\])?)\\s*){2}/"`
## Expression Syntax
### Supported Literals
@ -322,7 +330,7 @@ You can also retrieve the variables of a specific post by pasting its URL below
<th>rendered_html</th>
<td>string</td>
<td>
Over-compensation #<a href="https://friendica.mrpetovan.com/search?tag=Street" class="tag" title="Street">Street</a> #<a href="https://friendica.mrpetovan.com/search?tag=Night" class="tag" title="Night">Night</a> #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" class="tag" title="CarLights">CarLights</a> #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" class="tag" title="Jeep">Jeep</a> #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" class="tag" title="NoPeople">NoPeople</a> #<a href="https://friendica.mrpetovan.com/search?tag=Close" class="tag" title="Close">Close</a>-up <div class="type-link"><a href="https://www.eyeem.com/p/120800309" target="_blank"><img src="https://friendica.mrpetovan.com/proxy/bb/aHR0cHM6Ly9jZG4uZXllZW0uY29tL3RodW1iL2IyZjAxOTczOGNiZWVmMDZlMmY4Yzk1MTdjNjI4NmE4YWRjZDNhMDAtMTUyMjE4NDgyMDY0MS82NDAvNDgw" alt="" title="Over-compensation Street Night Car Lights Jeep No | EyeEm" class="attachment-image"></a><br><h4><a href="https://www.eyeem.com/p/120800309">Over-compensation Street Night Car Lights Jeep No | EyeEm</a></h4><blockquote>Photo by @<a href="https://twitter.com/MrPetovan" class="userinfo mention" title="MrPetovan">MrPetovan</a></blockquote><sup><a href="https://www.eyeem.com/p/120800309">www.eyeem.com</a></sup></div>
Over-compensation #<a href="https://friendica.mrpetovan.com/search?tag=Street" class="tag" title="Street">Street</a> #<a href="https://friendica.mrpetovan.com/search?tag=Night" class="tag" title="Night">Night</a> #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" class="tag" title="CarLights">CarLights</a> #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" class="tag" title="Jeep">Jeep</a> #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" class="tag" title="NoPeople">NoPeople</a> #<a href="https://friendica.mrpetovan.com/search?tag=Close" class="tag" title="Close">Close</a>-up <div class="type-link"><a href="https://www.eyeem.com/p/120800309" target="_blank" rel="noopener noreferrer"><img src="https://friendica.mrpetovan.com/proxy/bb/aHR0cHM6Ly9jZG4uZXllZW0uY29tL3RodW1iL2IyZjAxOTczOGNiZWVmMDZlMmY4Yzk1MTdjNjI4NmE4YWRjZDNhMDAtMTUyMjE4NDgyMDY0MS82NDAvNDgw" alt="" title="Over-compensation Street Night Car Lights Jeep No | EyeEm" class="attachment-image"></a><br><h4><a href="https://www.eyeem.com/p/120800309">Over-compensation Street Night Car Lights Jeep No | EyeEm</a></h4><blockquote>Photo by @<a href="https://twitter.com/MrPetovan" class="userinfo mention" title="MrPetovan">MrPetovan</a></blockquote><sup><a href="https://www.eyeem.com/p/120800309">www.eyeem.com</a></sup></div>
</td>
</tr>
<tr>
@ -450,11 +458,6 @@ You can also retrieve the variables of a specific post by pasting its URL below
<td>string</td>
<td>null</td>
</tr>
<tr>
<th>event_adjust</th>
<td>boolean</td>
<td>null</td>
</tr>
<tr>
<th>event_ignore</th>
<td>boolean</td>
@ -470,14 +473,14 @@ You can also retrieve the variables of a specific post by pasting its URL below
$a->strings['Back to Addon Settings']='الرجوع إلى إعدادات الإضافات';
$a->strings['Add a Rule']='أضف قاعدة';
$a->strings['Help']='مساعدة';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='إضافةوإدارةقواعدترشيحالمحتوىالشخصيةهنا.
$a->strings["Back to Addon Settings"]="Torna Addon Configuració";
$a->strings["Add a Rule"]="Afegiu una regla";
$a->strings["Help"]="Ajuda";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Afegiu i gestioneu les vostres regles de filtre de contingut personal en aquesta pantalla. Les regles tenen un nom i una expressió arbitrària que es combinen amb les dades de la publicació. Per obtenir una referència completa de les variables i operacions disponibles, comproveu el botó <a href=\"advancedcontentfilter/help\">pàgina d’ajuda</a>.";
$a->strings["Your rules"]="Les seves normes";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Encara no teniu normes. Comenceu a afegir-ne un fent clic al botó situat al costat del títol.";
$a->strings["Disabled"]="Desactivat";
$a->strings["Enabled"]="Permetre";
$a->strings["Disable this rule"]="Desactiva aquesta regla";
$a->strings["Enable this rule"]="Activa aquesta regla";
$a->strings["Edit this rule"]="Edita aquesta regla";
$a->strings["Edit the rule"]="Edita la regla";
$a->strings["Save this rule"]="Deseu aquesta regla";
$a->strings["Delete this rule"]="Suprimeix aquesta regla";
$a->strings["Rule"]="Regla";
$a->strings["Close"]="Tancar";
$a->strings["Add new rule"]="Add nova regla";
$a->strings["Rule Name"]="Nom de la regla";
$a->strings["Rule Expression"]="Expressió de regla";
$a->strings['Back to Addon Settings']='Torna Addon Configuració';
$a->strings['Add a Rule']='Afegiu una regla';
$a->strings['Help']='Ajuda';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.']='Afegiu i gestioneu les vostres regles de filtre de contingut personal en aquesta pantalla. Les regles tenen un nom i una expressió arbitrària que es combinen amb les dades de la publicació. Per obtenir una referència completa de les variables i operacions disponibles, comproveu el botó <a href="advancedcontentfilter/help">pàgina d’ajuda</a>.';
$a->strings['Your rules']='Les seves normes';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Encara no teniu normes. Comenceu a afegir-ne un fent clic al botó situat al costat del títol.';
$a->strings['Disabled']='Desactivat';
$a->strings['Enabled']='Permetre';
$a->strings['Disable this rule']='Desactiva aquesta regla';
$a->strings['Enable this rule']='Activa aquesta regla';
$a->strings['Edit this rule']='Edita aquesta regla';
$a->strings['Edit the rule']='Edita la regla';
$a->strings['Save this rule']='Deseu aquesta regla';
$a->strings['Delete this rule']='Suprimeix aquesta regla';
$a->strings['Rule']='Regla';
$a->strings['Close']='Tancar';
$a->strings['Add new rule']='Add nova regla';
$a->strings['Rule Name']='Nom de la regla';
$a->strings['Rule Expression']='Expressió de regla';
$a->strings["Back to Addon Settings"]="Zpět na nastavení doplňku";
$a->strings["Add a Rule"]="Přidat pravidlo";
$a->strings["Help"]="Nápověda";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Přidávejte a spravujte Vaše osobní pravidla pro filtrování obsahu na této obrazovce. Pravidla mají název a libovolný výraz, který bude porovnán s daty příspěvku. Pro úplnou referenci dostupných operací a proměnných navštivte <a href=\"advancedcontentfilter/help\">stránku nápovědy</a>.";
$a->strings["Your rules"]="Vaše pravidla";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Ještě nemáte žádná pravidla! Přidejte první kliknutím na tlačítko nahoře vedle nadpisu.";
$a->strings["Disabled"]="Zakázáno";
$a->strings["Enabled"]="Povoleno";
$a->strings["Disable this rule"]="Zakázat toto pravidlo";
$a->strings["Enable this rule"]="Povolit toto pravidlo";
$a->strings["Edit this rule"]="Upravit toto pravidlo";
$a->strings["Edit the rule"]="Upravit pravidlo";
$a->strings["Save this rule"]="Uložit toto pravidlo";
$a->strings["Delete this rule"]="Smazat toto pravidlo";
$a->strings["Rule"]="Pravidlo";
$a->strings["Close"]="Zavřít";
$a->strings["Add new rule"]="Přidat nové pravidlo";
$a->strings['Back to Addon Settings']='Zpět na nastavení doplňku';
$a->strings['Add a Rule']='Přidat pravidlo';
$a->strings['Help']='Nápověda';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.']='Přidávejte a spravujte Vaše osobní pravidla pro filtrování obsahu na této obrazovce. Pravidla mají název a libovolný výraz, který bude porovnán s daty příspěvku. Pro úplnou referenci dostupných operací a proměnných navštivte <a href="advancedcontentfilter/help">stránku nápovědy</a>.';
$a->strings['Your rules']='Vaše pravidla';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Ještě nemáte žádná pravidla! Přidejte první kliknutím na tlačítko nahoře vedle nadpisu.';
$a->strings['Disabled']='Zakázáno';
$a->strings['Enabled']='Povoleno';
$a->strings['Disable this rule']='Zakázat toto pravidlo';
$a->strings['Enable this rule']='Povolit toto pravidlo';
$a->strings['Edit this rule']='Upravit toto pravidlo';
$a->strings['Edit the rule']='Upravit pravidlo';
$a->strings['Save this rule']='Uložit toto pravidlo';
$a->strings['Delete this rule']='Smazat toto pravidlo';
$a->strings['Rule']='Pravidlo';
$a->strings['Close']='Zavřít';
$a->strings['Add new rule']='Přidat nové pravidlo';
$a->strings["Back to Addon Settings"]="Zurück zu den Addon Einstellungen";
$a->strings["Add a Rule"]="Eine Regel hinzufügen";
$a->strings["Help"]="Hilfe";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für die Filter, wirf bitte einen Blick auf die <a href=\"advancedcontentfilter/help\">Hilfsseite</a> des Addons.";
$a->strings["Your rules"]="Deine Regeln";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen, verwende bitte den Button neben dem Titel.";
$a->strings["Disabled"]="Deaktiviert";
$a->strings["Enabled"]="Aktiv";
$a->strings["Disable this rule"]="Diese Regel deaktivieren";
$a->strings["Enable this rule"]="Diese Regel aktivieren";
$a->strings["Edit this rule"]="Diese Regel bearbeiten";
$a->strings["Edit the rule"]="Die Regel bearbeiten";
$a->strings["Save this rule"]="Regel speichern";
$a->strings["Delete this rule"]="Diese Regel löschen";
$a->strings["Rule"]="Regel";
$a->strings["Close"]="Schließen";
$a->strings["Add new rule"]="Neue Regel hinzufügen";
$a->strings["Rule Name"]="Name der Regel";
$a->strings["Rule Expression"]="Ausdruck der Regel";
$a->strings['Back to Addon Settings']='Zurück zu den Addon Einstellungen';
$a->strings['Add a Rule']='Eine Regel hinzufügen';
$a->strings['Help']='Hilfe';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für die Filter, wirf bitte einen Blick auf die Hilfsseite des Addons.';
$a->strings['Your rules']='Deine Regeln';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen, verwende bitte den Button neben dem Titel.';
$a->strings['Disabled']='Deaktiviert';
$a->strings['Enabled']='Aktiv';
$a->strings['Disable this rule']='Diese Regel deaktivieren';
$a->strings['Enable this rule']='Diese Regel aktivieren';
$a->strings['Edit this rule']='Diese Regel bearbeiten';
$a->strings['Edit the rule']='Die Regel bearbeiten';
$a->strings['Save this rule']='Regel speichern';
$a->strings['Delete this rule']='Diese Regel löschen';
$a->strings['Rule']='Regel';
$a->strings['Close']='Schließen';
$a->strings['Add new rule']='Neue Regel hinzufügen';
$a->strings['Rule Name']='Name der Regel';
$a->strings['Rule Expression']='Ausdruck der Regel';
$a->strings['Cancel']='Abbrechen';
$a->strings['This addon requires this node having at least one post']='Dieses Addon funktioniert nur, wenn auf diesem Knoten mindestens ein Beitrag existiert.';
$a->strings['You must be logged in to use this method']='Du musst angemeldet sein, um diese Methode verwenden zu können ';
$a->strings['Invalid form security token, please refresh the page.']='Ungültiges Sciherheitstoken, bitte die Seite neu laden.';
$a->strings['The rule name and expression are required.']='Der Name der Regel und der Ausdruck sind erforderlich.';
$a->strings["Back to Addon Settings"]="Back to addon settings";
$a->strings["Add a Rule"]="Add a rule";
$a->strings["Help"]="Help";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>.";
$a->strings["Your rules"]="Your rules";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="You have no rules yet! Start adding one by clicking on the button above next to the title.";
$a->strings["Disabled"]="Disabled";
$a->strings["Enabled"]="Enabled";
$a->strings["Disable this rule"]="Disable this rule";
$a->strings["Enable this rule"]="Enable this rule";
$a->strings["Edit this rule"]="Edit this rule";
$a->strings["Edit the rule"]="Edit the rule";
$a->strings["Save this rule"]="Save this rule";
$a->strings["Delete this rule"]="Delete this rule";
$a->strings['Back to Addon Settings']='Back to addon settings';
$a->strings['Add a Rule']='Add a rule';
$a->strings['Help']='Help';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.']='Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.';
$a->strings['Your rules']='Your rules';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='You have no rules yet! Start adding one by clicking on the button above next to the title.';
$a->strings['Disabled']='Disabled';
$a->strings['Enabled']='Enabled';
$a->strings['Disable this rule']='Disable this rule';
$a->strings['Enable this rule']='Enable this rule';
$a->strings['Edit this rule']='Edit this rule';
$a->strings['Edit the rule']='Edit the rule';
$a->strings['Save this rule']='Save this rule';
$a->strings['Delete this rule']='Delete this rule';
$a->strings['Method not found']='Método no encontrado';
$a->strings['Filtered by rule: %s']='Filtrado por la regla: %s';
$a->strings['Advanced Content Filter']='Filtro de contenido avanzado';
$a->strings['Back to Addon Settings']='Volver a Ajustes de Complemento';
$a->strings['Add a Rule']='Añadir una regla';
$a->strings['Help']='Ayuda';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Agregue y administre sus reglas de filtrado de contenido personal en esta pantalla. Las reglas tienen un nombre y una expresión arbitraria que se comparará con los datos de la publicación. Para obtener una referencia completa de las operaciones y variables disponibles, consulte la página de ayuda.';
$a->strings['Your rules']='Tus reglas';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='¡Aún no tienes reglas! Empieza añadiendo una haciendo clic en el botón de arriba al lado del título. ';
$a->strings['Disabled']='Desactivado';
$a->strings['Enabled']='Activado';
$a->strings['Disable this rule']='Desactivar esta regla';
$a->strings['Enable this rule']='Activar esta regla';
$a->strings['Edit this rule']='Editar esta regla';
$a->strings['Edit the rule']='Editar regla';
$a->strings['Save this rule']='Guardar esta regla';
$a->strings['Delete this rule']='Borrar esta regla';
$a->strings['Rule']='Regla';
$a->strings['Close']='Cerrar';
$a->strings['Add new rule']='Agregar nueva regla';
$a->strings['Rule Name']='Nombre de la regla';
$a->strings['Rule Expression']='Expresión de la regla';
$a->strings['Cancel']='Cancelar';
$a->strings['You must be logged in to use this method']='Debe estar registrado para usar este método';
$a->strings['Invalid form security token, please refresh the page.']='Token de seguridad de formulario inválido, por favor actualice la página.';
$a->strings['The rule name and expression are required.']='El nombre y la expresión de la regla son obligatorios.';
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="";
$a->strings["Your rules"]="Sääntösi";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="";
$a->strings["Disabled"]="Ei käytössä";
$a->strings["Enabled"]="Käytössä";
$a->strings["Disable this rule"]="";
$a->strings["Enable this rule"]="Ota tämä sääntö käyttöön";
$a->strings["Edit this rule"]="Muokkaa tätä sääntöä";
$a->strings["Edit the rule"]="Muokkaa sääntöä";
$a->strings["Save this rule"]="Tallenna tämä sääntö";
$a->strings["Delete this rule"]="Poista tämä sääntö";
if (($n==0||$n==1)){return0;}elseif($n!=0&&$n%1000000==0){return1;}else{return2;}
}}
;
$a->strings["Filtered by rule: %s"]="Filtré par règle:%s";
$a->strings["Advanced Content Filter"]="Filtre avancé de contenu";
$a->strings["Back to Addon Settings"]="Retour aux paramètres de l'extension";
$a->strings["Add a Rule"]="Ajouter une règle";
$a->strings["Help"]="Aide";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Dans cet écran, ajoutez et gérez votre règle personnelle de filtre de contenu. Les règles portent un nom et contiennent une expression arbitraire qui sera appliquée aux données du post. Pour une liste complète des opérations disponibles, voyez la page d'aide";
$a->strings["Your rules"]="Vos règles";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Vous n'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-dessus près du titre";
$a->strings["Disabled"]="Désactivé";
$a->strings["Enabled"]="Activé";
$a->strings["Disable this rule"]="Désactiver cette règle";
$a->strings["Enable this rule"]="Activer cette règle";
$a->strings["Edit this rule"]="Modifier cette règle";
$a->strings["Edit the rule"]="Modifier la règle";
$a->strings["Save this rule"]="Enregistrer cette règle";
$a->strings["Delete this rule"]="Supprimer cette règle";
$a->strings["Rule"]="Règle";
$a->strings["Close"]="Fermer";
$a->strings["Add new rule"]="Ajouter nouvelle règle";
$a->strings["Rule Name"]="Nommer règle";
$a->strings["Rule Expression"]="Expression de règle";
$a->strings["Unknown post with guid: %s"]="Post inconnu avec guid : %s";
$a->strings["Method not found"]="Méthode non trouvée";
$a->strings['Filtered by rule: %s']='Filtré par règle:%s';
$a->strings['Advanced Content Filter']='Filtre avancé de contenu';
$a->strings['Back to Addon Settings']='Retour aux paramètres de l\'extension';
$a->strings['Add a Rule']='Ajouter une règle';
$a->strings['Help']='Aide';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Cet écran permet d\'ajouter et de gérer vos règles de filtrage de contenu personnelles. Les règles ont un nom et une expression arbitraire qui sera comparée aux données des messages. Pour une référence complète des opérations et variables disponibles, consultez la page d\'aide.';
$a->strings['Your rules']='Vos règles';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Vous n\'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-dessus près du titre';
$a->strings['Disabled']='Désactivé';
$a->strings['Enabled']='Activé';
$a->strings['Disable this rule']='Désactiver cette règle';
$a->strings['Enable this rule']='Activer cette règle';
$a->strings['Edit this rule']='Modifier cette règle';
$a->strings['Edit the rule']='Modifier la règle';
$a->strings['Save this rule']='Enregistrer cette règle';
$a->strings['Delete this rule']='Supprimer cette règle';
$a->strings['Rule']='Règle';
$a->strings['Close']='Fermer';
$a->strings['Add new rule']='Ajouter nouvelle règle';
$a->strings['Rule Name']='Nommer règle';
$a->strings['Rule Expression']='Expression de règle';
$a->strings['Cancel']='Annuler';
$a->strings['This addon requires this node having at least one post']='Cette extension requiert au moins une publication sur ce serveur pour fonctionner';
$a->strings['You must be logged in to use this method']='Vous devez être connecté pour utiliser cette méthode';
$a->strings['Invalid form security token, please refresh the page.']='Formulaire token de sécurité invalide, rafraîchissez la page';
$a->strings['The rule name and expression are required.']='Le nom et l\'expression de cette règle sont requis';
$a->strings['Rule successfully added']='Règle bien ajoutée';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.']='Cette règle n\'existe pas ou ne vous appartient pas';
$a->strings['Rule successfully updated']='Règle bien mise à jour';
$a->strings['Rule successfully deleted']='Règle bien supprimée';
$a->strings['Back to Addon Settings']='Vissza a bővítménybeállításokhoz';
$a->strings['Add a Rule']='Szabály hozzáadása';
$a->strings['Help']='Súgó';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Személyes tartalomszűrő szabályok hozzáadása és kezelése ezen a képernyőn. A szabályoknak van nevük és egy tetszőleges kifejezésük, amely a bejegyzés adataira lesz illesztve. Az elérhető műveletek és változók teljes hivatkozásáért nézze meg a súgóoldalt.';
$a->strings['Your rules']='Az Ön szabályai';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Még nincsenek szabályai! Kezdje meg egy szabály hozzáadását a cím mellett lévő fenti gombra kattintva.';
$a->strings['Disabled']='Letiltva';
$a->strings['Enabled']='Engedélyezve';
$a->strings['Disable this rule']='A szabály letiltása';
$a->strings['Enable this rule']='A szabály engedélyezése';
$a->strings['Edit this rule']='A szabály szerkesztése';
$a->strings['Edit the rule']='A szabály szerkesztése';
$a->strings['Save this rule']='A szabály mentése';
$a->strings['Delete this rule']='A szabály törlése';
$a->strings['Rule']='Szabály';
$a->strings['Close']='Bezárás';
$a->strings['Add new rule']='Új szabály hozzáadása';
$a->strings['This addon requires this node having at least one post']='Ez a bővítmény megköveteli, hogy ennek a csomópontnak legalább egy bejegyzése legyen';
$a->strings['You must be logged in to use this method']='Bejelentkezve kell lennie a módszer használatához';
$a->strings['Invalid form security token, please refresh the page.']='Érvénytelen űrlap biztonsági token. Frissítse az oldalt.';
$a->strings['The rule name and expression are required.']='A szabály neve és kifejezése kötelező.';
$a->strings['Rule successfully added']='A szabály sikeresen hozzáadva';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.']='A szabály nem létezik vagy nem Önhöz tatozik.';
$a->strings['Rule successfully updated']='A szabály sikeresen frissítve';
$a->strings['Rule successfully deleted']='A szabály sikeresen törölve';
$a->strings["Back to Addon Settings"]="Torna alle impostazioni del componente aggiuntivo";
$a->strings["Add a Rule"]="Aggiungi una regola";
$a->strings["Help"]="Aiuto";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni disponibili, controlla la <a href=\"advancedcontentfilter/help\">pagina di aiuto</a>.";
$a->strings["Your rules"]="Le tue regole";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui sopra a fianco al titolo.";
$a->strings["Disabled"]="Disabilitato";
$a->strings["Enabled"]="Abilitato";
$a->strings["Disable this rule"]="Diabilita questa regola";
$a->strings["Enable this rule"]="Abilita questa regola";
$a->strings["Edit this rule"]="Modifica questa regola";
$a->strings["Edit the rule"]="Modifica la regola";
$a->strings["Save this rule"]="Salva questa regola";
$a->strings["Delete this rule"]="Elimina questa regola";
$a->strings["Rule"]="Regola";
$a->strings["Close"]="Chiudi";
$a->strings["Add new rule"]="Aggiungi nuova regola";
$a->strings['Back to Addon Settings']='Torna alle impostazioni del componente aggiuntivo';
$a->strings['Add a Rule']='Aggiungi una regola';
$a->strings['Help']='Aiuto';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un\'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni e variabili disponibili, controlla la pagina di aiuto.';
$a->strings['Your rules']='Le tue regole';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui sopra a fianco al titolo.';
$a->strings['Disabled']='Disabilitato';
$a->strings['Enabled']='Abilitato';
$a->strings['Disable this rule']='Diabilita questa regola';
$a->strings['Enable this rule']='Abilita questa regola';
$a->strings['Edit this rule']='Modifica questa regola';
$a->strings['Edit the rule']='Modifica la regola';
$a->strings['Save this rule']='Salva questa regola';
$a->strings['Delete this rule']='Elimina questa regola';
$a->strings['Rule']='Regola';
$a->strings['Close']='Chiudi';
$a->strings['Add new rule']='Aggiungi nuova regola';
$a->strings["Filtered by rule: %s"]="Gefilterd volgens regel: %s";
$a->strings["Advanced Content Filter"]="Geavanceerd filter voor berichtsinhoud";
$a->strings["Back to Addon Settings"]="Terug naar Addon instellingen";
$a->strings["Add a Rule"]="Filterregel toevoegen";
$a->strings["Help"]="Help";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Beheer de filterregels van je persoonlijke filter voor berichtsinhoud in dit scherm. Regels hebben een naam en bewoording welke we automatisch controleren door te vergelijken met de inhoud van elk bericht. Voor een compleet naslagwerk van de beschikbare bewerkingen en variabelen, zie de <a href=\"advancedcontentfilter/help\">help pagina</a>.";
$a->strings["Your rules"]="Jouw regels";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Je hebt nog geen regels! Klik op de knop bovenin naast de titel om een regel toe te voegen.";
$a->strings["Disabled"]="Uitgeschakeld";
$a->strings["Enabled"]="Geactiveerd";
$a->strings["Disable this rule"]="Deze regel uitschakelen";
$a->strings["Enable this rule"]="Deze regel inschakelen";
$a->strings["Edit this rule"]="Regel bewerken";
$a->strings["Edit the rule"]="Regel bewerken";
$a->strings["Save this rule"]="Deze regel opslaan";
$a->strings["Delete this rule"]="Deze regel verwijderen";
$a->strings["Rule"]="Regel";
$a->strings["Close"]="Sluiten";
$a->strings["Add new rule"]="Voeg nieuwe regel toe";
$a->strings["Missing argument: guid."]="Parameter guid niet aanwezig";
$a->strings["Unknown post with guid: %s"]="Onbekend bericht met guid: %s";
$a->strings["Method not found"]="Methode niet gevonden";
$a->strings['Filtered by rule: %s']='Gefilterd volgens regel: %s';
$a->strings['Advanced Content Filter']='Geavanceerd filter voor berichtsinhoud';
$a->strings['Back to Addon Settings']='Terug naar Addon instellingen';
$a->strings['Add a Rule']='Filterregel toevoegen';
$a->strings['Help']='Help';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.']='Beheer de filterregels van je persoonlijke filter voor berichtsinhoud in dit scherm. Regels hebben een naam en bewoording welke we automatisch controleren door te vergelijken met de inhoud van elk bericht. Voor een compleet naslagwerk van de beschikbare bewerkingen en variabelen, zie de <a href="advancedcontentfilter/help">help pagina</a>.';
$a->strings['Your rules']='Jouw regels';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Je hebt nog geen regels! Klik op de knop bovenin naast de titel om een regel toe te voegen.';
$a->strings['Disabled']='Uitgeschakeld';
$a->strings['Enabled']='Geactiveerd';
$a->strings['Disable this rule']='Deze regel uitschakelen';
$a->strings['Enable this rule']='Deze regel inschakelen';
$a->strings['Edit this rule']='Regel bewerken';
$a->strings['Edit the rule']='Regel bewerken';
$a->strings['Save this rule']='Deze regel opslaan';
$a->strings['Delete this rule']='Deze regel verwijderen';
$a->strings['Rule']='Regel';
$a->strings['Close']='Sluiten';
$a->strings['Add new rule']='Voeg nieuwe regel toe';
if ($n==1){return0;}elseif(($n%10>=2&&$n%10<=4)&&($n%100<12||$n%100>14)) {return1;}elseif($n!=1&&($n%10>=0&&$n%10<=1)||($n%10>=5&&$n%10<=9)||($n%100>=12&&$n%100<=14)) {return2;}else{return3;}
}}
;
$a->strings["Filtered by rule: %s"]=" Filtruj według reguły: %s";
$a->strings["Back to Addon Settings"]="Powrót do ustawień dodatków";
$a->strings["Add a Rule"]="Dodaj regułę";
$a->strings["Help"]="Pomoc";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Dodaj i zarządzaj regułami filtrowania treści osobistych na tym ekranie. Reguły mają nazwę i dowolne wyrażenie, które zostanie dopasowane do danych postów. Aby uzyskać pełne informacje o dostępnych operacjach i zmiennych, sprawdź <a href=\"advancedcontentfilter/help\">stronę pomocy</a>.";
$a->strings["Your rules"]="Twoje zasady";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk znajdujący się nad tytułem.";
$a->strings["Disabled"]="Wyłącz";
$a->strings["Enabled"]="Włącz";
$a->strings["Disable this rule"]="Wyłącz tę regułę";
$a->strings["Enable this rule"]="Włącz tę regułę";
$a->strings['Back to Addon Settings']='Powrót do ustawień dodatków';
$a->strings['Add a Rule']='Dodaj regułę';
$a->strings['Help']='Pomoc';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Na tym ekranie możesz zarządzać swoimi osobistymi regułami filtrowania treści. Reguły składają się z nazwy oraz dowolnego wyrażenia, do którego przyrównywane będą posty. Aby uzyskć więcej informacji na temat dostępnych opracji oraz zmiennych, zapoznaj się ze stronę pomocy.';
$a->strings['Your rules']='Twoje zasady';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk znajdujący się nad tytułem.';
$a->strings['Disabled']='Wyłącz';
$a->strings['Enabled']='Włącz';
$a->strings['Disable this rule']='Wyłącz tę regułę';
$a->strings['Enable this rule']='Włącz tę regułę';
$a->strings['Back to Addon Settings']='Вернуться к настройкам дополнений';
$a->strings['Add a Rule']='Добавить правило';
$a->strings['Help']='Помощь';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Добавляйте и управляйте своими собственными фильтрами на этой странице. У правил есть имя и произвольное выражение, которое будет сопоставляться с данными поста. Для полной ссылки на доступные операции и переменные, посмотрите страницу справки.';
$a->strings['Your rules']='Ваши правила';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='УВас нет ни одного правила. Начните добавление первого с нажатия на кнопку выше, рядом с названием.';
$a->strings['Disabled']='Отключено';
$a->strings['Enabled']='Включено';
$a->strings['Disable this rule']='Отключить это правило';
$a->strings['Enable this rule']='Включить это правило';
$a->strings['Edit this rule']='Изменить это правило';
$a->strings['Edit the rule']='Изменить правило';
$a->strings['Save this rule']='Сохранить это правило';
$a->strings['Delete this rule']='Удалить это правило';
$a->strings['Rule']='Правило';
$a->strings['Close']='Закрыть';
$a->strings['Add new rule']='Добавить новое правило';
$a->strings["Back to Addon Settings"]="TIllbaka till Tilläggsinställningar";
$a->strings["Add a Rule"]="Lägg till en regel";
$a->strings["Help"]="Hjälp";
$a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."]="Lägg till och hantera dina personliga regler för innehållsfilter i det här fönstret. Regler har ett namn och ett valfritt uttryck och kommer jämföras mot inläggets innehåll. Förteckning av alla operander och variabler finns att hitta på <a href=\"advancedcontentfilter/help\">hjälpsidan</a>.";
$a->strings["Your rules"]="Dina regler";
$a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."]="Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför, bredvid överskriften.";
$a->strings["Disabled"]="Inaktiverad";
$a->strings["Enabled"]="Aktiverad";
$a->strings["Disable this rule"]="Inaktivera den här regeln";
$a->strings["Enable this rule"]="Aktivera den här regeln";
$a->strings["Edit this rule"]="Redigera den här regeln";
$a->strings["Edit the rule"]="Redigera den här regeln";
$a->strings["Save this rule"]="Spara den här regeln";
$a->strings["Delete this rule"]="Ta bort den här regeln";
$a->strings['Back to Addon Settings']='TIllbaka till Tilläggsinställningar';
$a->strings['Add a Rule']='Lägg till en regel';
$a->strings['Help']='Hjälp';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.']='Lägg till och hantera dina personliga regler för innehållsfilter i det här fönstret. Regler har ett namn och ett filteruttryck som jämförs mot inläggets innehåll. Förteckning över alla operander och variabler finns att hitta på <a href="advancedcontentfilter/help">hjälpsidan</a>.';
$a->strings['Your rules']='Dina regler';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför, bredvid överskriften.';
$a->strings['Disabled']='Inaktiverad';
$a->strings['Enabled']='Aktiverad';
$a->strings['Disable this rule']='Inaktivera den här regeln';
$a->strings['Enable this rule']='Aktivera den här regeln';
$a->strings['Edit this rule']='Redigera den här regeln';
$a->strings['Edit the rule']='Redigera den här regeln';
$a->strings['Save this rule']='Spara den här regeln';
$a->strings['Delete this rule']='Ta bort den här regeln';
$a->strings['Rule']='Regel';
$a->strings['Close']='Stäng';
$a->strings['Add new rule']='Lägg till ny regel';
$a->strings['Rule Name']='Regelnamn';
$a->strings['Rule Expression']='Regeluttryck';
$a->strings['Cancel']='Avbryt';
$a->strings['This addon requires this node having at least one post']='Detta tillägg kräver att denna nod har åtminstone ett inlägg';
$a->strings['You must be logged in to use this method']='Du måste vara inloggad för att använda den här funktionen';
$a->strings['Invalid form security token, please refresh the page.']='Felaktigt säkerhetsformulärstecken, vänligen uppdatera sidan.';
$a->strings['The rule name and expression are required.']='Regelns namn och uttryck krävs.';
$a->strings['Rule successfully added']='Regeln kunde läggas till';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.']='Regeln finns inte eller tillhör inte dig.';
$a->strings['Rule successfully updated']='Uppdatering av regel lyckades';
$a->strings['Rule successfully deleted']='Borttagning av regel lyckades';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.']='在此界面上添加和管理你的个人内容过滤规则。规则要有名称和能匹配帖子内容的任意表达式。完整可用的运算符和变量,请查看<a href="advancedcontentfilter/help">帮助页面</a>。';
$a->strings['Your rules']='你的规则';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.']='你还没有规则!点击标题上方的按钮开始新增规则。';
Starting Feb. 13th 2017, container-interop is officially deprecated in favor of [PSR-11](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md).
Container-interop has been the test-bed of PSR-11. From v1.2, container-interop directly extends PSR-11 interfaces.
Therefore, all containers implementing container-interop are now *de-facto* compatible with PSR-11.
- Projects implementing container-interop interfaces are encouraged to directly implement PSR-11 interfaces instead.
- Projects consuming container-interop interfaces are very strongly encouraged to directly type-hint on PSR-11 interfaces, in order to be compatible with PSR-11 containers that are not compatible with container-interop.
Regarding the delegate lookup feature, that is present in container-interop and not in PSR-11, the feature is actually a design pattern. It is therefore not deprecated. Documentation regarding this design pattern will be migrated from this repository into a separate website in the future.
## About
*container-interop* tries to identify and standardize features in *container* objects (service locators,
dependency injection containers, etc.) to achieve interoperability.
Through discussions and trials, we try to create a standard, made of common interfaces but also recommendations.
If PHP projects that provide container implementations begin to adopt these common standards, then PHP
applications and projects that use containers can depend on the common interfaces instead of specific
implementations. This facilitates a high-level of interoperability and flexibility that allows users to consume
*any* container implementation that can be adapted to these interfaces.
The work done in this project is not officially endorsed by the [PHP-FIG](http://www.php-fig.org/), but it is being
worked on by members of PHP-FIG and other good developers. We adhere to the spirit and ideals of PHP-FIG, and hope
this project will pave the way for one or more future PSRs.
The list below contains only a sample of all the projects consuming `ContainerInterface`. For a more complete list have a look [here](http://packanalyst.com/class?q=Interop%5CContainer%5CContainerInterface).
| [blast-facades](https://github.com/phpthinktank/blast-facades): Minimize complexity and represent dependencies as facades. | ![](https://img.shields.io/packagist/dt/blast/facades.svg) |
| [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di): an extension to [Silex](http://silex.sensiolabs.org/) that adds support for any *container-interop* compatible container | ![](https://img.shields.io/packagist/dt/mouf/interop.silex.di.svg) |
| [mindplay/walkway](https://github.com/mindplay-dk/walkway): a modular request router | ![](https://img.shields.io/packagist/dt/mindplay/walkway.svg) |
This document describes the *delegate lookup feature*.
Containers are not required to implement this feature to respect the `ContainerInterface`.
However, containers implementing this feature will offer a greater lever of interoperability
with other containers, allowing multiple containers to share entries in the same application.
Implementation of this feature is therefore recommanded.
2. Why Bother?
--------------
The [`ContainerInterface`](../src/Interop/Container/ContainerInterface.php) ([meta doc](ContainerInterface.md))
standardizes how frameworks and libraries make use of a container to obtain objects and parameters.
By standardizing such a behavior, frameworks and libraries relying on the `ContainerInterface`
could work with any compatible container.
That would allow end users to choose their own container based on their own preferences.
The `ContainerInterface` is also enough if we want to have several containers side-by-side in the same
application. For instance, this is what the [CompositeContainer](https://github.com/jeremeamia/acclimate-container/blob/master/src/CompositeContainer.php)
class of [Acclimate](https://github.com/jeremeamia/acclimate-container) is designed for:
![Side by side containers](images/side_by_side_containers.png)
However, an instance in container 1 cannot reference an instance in container 2.
It would be better if an instance of container 1 could reference an instance in container 2,
* Sets the parent container associated to that container. This container will call
* the parent container to fetch dependencies.
*
* @param ContainerInterface $container
*/
public function setParentContainer(ContainerInterface $container);
}
```
The interface idea was first questioned by @Ocramius [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
@Ocramius expressed the idea that an interface should not contain setters, otherwise, it is forcing implementation
details on the class implementing the interface.
Then @mnapoli made a proposal for a "convention" [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51841079),
this idea was further discussed until all participants in the discussion agreed to remove the interface idea
and replace it with a "standard" feature.
**Pros:**
If we had had an interface, we could have delegated the registration of the delegate/composite container to the
the delegate/composite container itself.
For instance:
```php
$containerA = new ContainerA();
$containerB = new ContainerB();
$compositeContainer = new CompositeContainer([$containerA, $containerB]);
// The call to 'setParentContainer' is delegated to the CompositeContainer
// It is not the responsibility of the user anymore.
class CompositeContainer {
...
public function __construct($containers) {
foreach ($containers as $container) {
if ($container instanceof ParentAwareContainerInterface) {
$container->setParentContainer($this);
}
}
...
}
}
```
**Cons:**
Cons have been extensively discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
Basically, forcing a setter into an interface is a bad idea. Setters are similar to constructor arguments,
and it's a bad idea to standardize a constructor: how the delegate container is configured into a container is an implementation detail. This outweights the benefits of the interface.
### 4.4 Alternative: no exception case for delegate lookups
Originally, the proposed wording for delegate lookup calls was:
> Important! The lookup MUST be performed on the delegate container **only**, not on the container itself.
This was later replaced by:
> Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
>
> It is however allowed for containers to provide exception cases for special entries, and a way to lookup
> into the same container (or another container) instead of the delegate container.
Exception cases have been allowed to avoid breaking dependencies with some services that must be provided
by the container (on @njasm proposal). This was proposed here: https://github.com/container-interop/container-interop/pull/20#issuecomment-56597235
### 4.5 Alternative: having one of the containers act as the composite container
In real-life scenarios, we usually have a big framework (Symfony 2, Zend Framework 2, etc...) and we want to
add another DI container to this container. Most of the time, the "big" framework will be responsible for
creating the controller's instances, using it's own DI container. Until *container-interop* is fully adopted,
the "big" framework will not be aware of the existence of a composite container that it should use instead
of its own container.
For this real-life use cases, @mnapoli and @moufmouf proposed to extend the "big" framework's DI container
to make it act as a composite container.
This has been discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-40367194)
and [here](http://mouf-php.com/container-interop-whats-next#solution4).
Having a container act as the composite container is not part of the delegate lookup standard because it is
simply a temporary design pattern used to make existing frameworks that do not support yet ContainerInterop
play nice with other DI containers.
5. Implementations
------------------
The following projects already implement the delegate lookup feature:
- [Mouf](http://mouf-php.com), through the [`setDelegateLookupContainer` method](https://github.com/thecodingmachine/mouf/blob/2.0/src/Mouf/MoufManager.php#L2120)
- [PHP-DI](http://php-di.org/), through the [`$wrapperContainer` parameter of the constructor](https://github.com/mnapoli/PHP-DI/blob/master/src/DI/Container.php#L72)
- [pimple-interop](https://github.com/moufmouf/pimple-interop), through the [`$container` parameter of the constructor](https://github.com/moufmouf/pimple-interop/blob/master/src/Interop/Container/Pimple/PimpleInterop.php#L62)
6. People
---------
Are listed here all people that contributed in the discussions, by alphabetical order: