forked from GNUsocial/gnu-social
[I18N] Small fixes. Still broken, though :')
This commit is contained in:
parent
fb457d4a45
commit
f28ff24f2a
@ -34,6 +34,8 @@
|
|||||||
|
|
||||||
namespace App\Core\I18n;
|
namespace App\Core\I18n;
|
||||||
|
|
||||||
|
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
// Locale category constants are usually predefined, but may not be
|
// Locale category constants are usually predefined, but may not be
|
||||||
// on some systems such as Win32.
|
// on some systems such as Win32.
|
||||||
$LC_CATEGORIES = [
|
$LC_CATEGORIES = [
|
||||||
@ -68,13 +70,10 @@ abstract class I18n
|
|||||||
* Also handles plurals and contexts depending on what parameters
|
* Also handles plurals and contexts depending on what parameters
|
||||||
* are passed to it:
|
* are passed to it:
|
||||||
*
|
*
|
||||||
* _m($msg) -- simple message
|
* _m(string $msg) -- simple message
|
||||||
* _m($ctx, $msg) -- message with context
|
* _m(string $ctx, string $msg) -- message with context
|
||||||
* _m($msg1, $msg2, $n) -- message that can be singular or plural
|
* _m(string|string[] $msg, array $params) -- message
|
||||||
* _m($ctx, $msg1, $msg2, $n) -- combination of the previous two
|
* _m(string $ctx, string|string[] $msg, array $params) -- combination of the previous two
|
||||||
*
|
|
||||||
* @param string $msg
|
|
||||||
* @param extra params as described above
|
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*
|
*
|
||||||
@ -82,14 +81,14 @@ abstract class I18n
|
|||||||
*
|
*
|
||||||
* @todo add parameters
|
* @todo add parameters
|
||||||
*/
|
*/
|
||||||
function _m(string $msg /*, ...*/): string
|
function _m(): string
|
||||||
{
|
{
|
||||||
$domain = I18nHelper::_mdomain(debug_backtrace()[0]['file']);
|
$domain = I18nHelper::_mdomain(debug_backtrace()[0]['file']);
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
switch (count($args)) {
|
switch (count($args)) {
|
||||||
case 1:
|
case 1:
|
||||||
// Empty parameters, simple message
|
// Empty parameters, simple message
|
||||||
return I18nHelper::$translator->trans($msg, [], $domain);
|
return I18nHelper::$translator->trans($args[0], [], $domain);
|
||||||
case 3:
|
case 3:
|
||||||
if (is_int($args[2])) {
|
if (is_int($args[2])) {
|
||||||
throw new Exception('Calling `_m()` with an explicit number is deprecated, ' .
|
throw new Exception('Calling `_m()` with an explicit number is deprecated, ' .
|
||||||
@ -98,9 +97,14 @@ function _m(string $msg /*, ...*/): string
|
|||||||
// Falthrough
|
// Falthrough
|
||||||
// no break
|
// no break
|
||||||
case 2:
|
case 2:
|
||||||
if (is_string($args[0]) && !is_array($args[1])) {
|
if (is_string($args[0])) {
|
||||||
// ASCII 4 is EOT, used to separate context from string
|
if (!is_array($args[1])) {
|
||||||
$context = array_shift($args) . '\004';
|
// ASCII 4 is EOT, used to separate context from string
|
||||||
|
$context = array_shift($args) . '\004';
|
||||||
|
} else {
|
||||||
|
throw new InvalidArgumentException('Bad parameters to `_m()`. '
|
||||||
|
. 'Seemingly called with a context and multiple messages');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($args[0])) {
|
if (is_array($args[0])) {
|
||||||
|
@ -47,7 +47,7 @@ abstract class I18nHelper
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks for which plugin we've been called from to get the gettext domain;
|
* Looks for which plugin we've been called from to get the gettext domain;
|
||||||
* if not in a plugin subdirectory, we'll use the default 'core'.
|
* if not in a plugin subdirectory, we'll use the default 'core+intl-icu'.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -68,7 +68,7 @@ abstract class I18nHelper
|
|||||||
$path = Formatting::normalizePath($path);
|
$path = Formatting::normalizePath($path);
|
||||||
$cached[$path] = Formatting::pluginFromPath($path);
|
$cached[$path] = Formatting::pluginFromPath($path);
|
||||||
}
|
}
|
||||||
return $cached[$path] ?? 'core';
|
return $cached[$path] ?? 'core+intl-icu';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -219,17 +219,17 @@ abstract class I18nHelper
|
|||||||
{
|
{
|
||||||
$msg = '';
|
$msg = '';
|
||||||
foreach ($params as $var => $val) {
|
foreach ($params as $var => $val) {
|
||||||
if (is_int($var)) {
|
if (is_int($val)) {
|
||||||
$pref = '=';
|
$pref = '=';
|
||||||
$op = 'plural';
|
$op = 'plural';
|
||||||
} elseif (is_string($var)) {
|
} elseif (is_string($var)) {
|
||||||
$pref = '';
|
$pref = '';
|
||||||
$op = 'select,';
|
$op = 'select';
|
||||||
} else {
|
} else {
|
||||||
throw new Exception('Invalid key type. (int|string) only');
|
throw new Exception('Invalid key type. (int|string) only');
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = "{{$var}, {$op} ";
|
$res = "{{$var}, {$op}, ";
|
||||||
$i = 1;
|
$i = 1;
|
||||||
$cnt = count($messages);
|
$cnt = count($messages);
|
||||||
foreach ($messages as $val => $m) {
|
foreach ($messages as $val => $m) {
|
||||||
|
Loading…
Reference in New Issue
Block a user