<?php
interface TranslatorInterface
{
/**
* Translates the given message.
*
* When a number is provided as a parameter named "%count%", the message is parsed for plural
* forms and a translation is chosen according to this number using the following rules:
*
* Given a message with different plural translations separated by a
* pipe (|), this method returns the correct portion of the message based
* on the given number, locale and the pluralization rules in the message
* itself.
*
* The message supports two different types of pluralization rules:
*
* interval: {0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples
* indexed: There is one apple|There are %count% apples
*
* The indexed solution can also contain labels (e.g. one: There is one apple).
* This is purely for making the translations more clear - it does not
* affect the functionality.
*
* The two methods can also be mixed:
* {0} There are no apples|one: There is one apple|more: There are %count% apples
*
* An interval can represent a finite set of numbers:
* {1,2,3,4}
*
* An interval can represent numbers between two numbers:
* [1, +Inf]
* ]-1,2[
*
* The left delimiter can be [ (inclusive) or ] (exclusive).
* The right delimiter can be [ (exclusive) or ] (inclusive).
* Beside numbers, you can use -Inf and +Inf for the infinite.
*
* @see https://en.wikipedia.org/wiki/ISO_31-11
*
* @param string $id The message id (may also be an object that can be cast to string)
* @param array $parameters An array of parameters for the message
* @param string|null $domain The domain for the message or null to use the default
* @param string|null $locale The locale or null to use the default
*
* @return string The translated string
*
* @throws \InvalidArgumentException If the locale contains invalid characters
*/
public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null);
}
final class StubTranslator implements TranslatorInterface
{
public function trans($id, array $parameters = [], $domain = null, $locale = null): string
{
return '[trans]'.strtr($id, $parameters).'[/trans]';
}
}
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/Kqeo7
function name: (null)
number of ops: 2
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
52 0 E > DECLARE_CLASS 'stubtranslator'
58 1 > RETURN 1
Class TranslatorInterface:
Function trans:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/Kqeo7
function name: trans
number of ops: 5
compiled vars: !0 = $id, !1 = $parameters, !2 = $domain, !3 = $locale
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
49 0 E > RECV !0
1 RECV_INIT !1 <array>
2 RECV_INIT !2 null
3 RECV_INIT !3 null
4 > RETURN null
End of function trans
End of class TranslatorInterface.
Class StubTranslator:
Function trans:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/Kqeo7
function name: trans
number of ops: 14
compiled vars: !0 = $id, !1 = $parameters, !2 = $domain, !3 = $locale
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
54 0 E > RECV !0
1 RECV_INIT !1 <array>
2 RECV_INIT !2 null
3 RECV_INIT !3 null
56 4 INIT_FCALL 'strtr'
5 SEND_VAR !0
6 SEND_VAR !1
7 DO_ICALL $4
8 CONCAT ~5 '%5Btrans%5D', $4
9 CONCAT ~6 ~5, '%5B%2Ftrans%5D'
10 VERIFY_RETURN_TYPE ~6
11 > RETURN ~6
57 12* VERIFY_RETURN_TYPE
13* > RETURN null
End of function trans
End of class StubTranslator.