From fed06a6c6d30307e021216b9837a18afcad1e412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Dobro=C5=88?= Date: Fri, 16 Jun 2023 23:29:19 +0200 Subject: [PATCH] Fix hashKey for unicode texts --- src/fbt/Transform/FbtTransform/fbtHash.php | 2 +- tests/fbt/fbtTest.php | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/fbt/Transform/FbtTransform/fbtHash.php b/src/fbt/Transform/FbtTransform/fbtHash.php index 8290fc8..4a905e5 100644 --- a/src/fbt/Transform/FbtTransform/fbtHash.php +++ b/src/fbt/Transform/FbtTransform/fbtHash.php @@ -44,7 +44,7 @@ public static function fbtJenkinsHash($jsfbt, $desc, $noStringify = false): int is_string($payload), 'JSFBT is not a string type. Please disable noStringify' ); - $key = $payload . '|' . $desc; + $key = utf8_encode($payload . '|' . $desc); return self::jenkinsHash($key); } diff --git a/tests/fbt/fbtTest.php b/tests/fbt/fbtTest.php index a9fa700..bfc3cad 100644 --- a/tests/fbt/fbtTest.php +++ b/tests/fbt/fbtTest.php @@ -10,6 +10,7 @@ use fbt\Lib\IntlViewerContext; use fbt\Runtime\Shared\fbt; use fbt\Runtime\Shared\FbtHooks; +use fbt\Transform\FbtRuntime\FbtRuntimeTransform; use fbt\Transform\FbtTransform\FbtTransform; use fbt\Transform\FbtTransform\Translate\IntlVariations; @@ -601,6 +602,16 @@ public function testNumberLiteralValueAsIs() $this->assertSame('A total amount is 10000', self::transform($fbt)); } + public function testUnicodeText() + { + $fbt = (string)fbt('Pick an emoji…', 'placeholder text for emoji picker'); + + $hashKey = FbtRuntimeTransform::transform(FbtTransform::$phrases[0])['hk']; + + $this->assertSame('ZAVir', $hashKey); + $this->assertSame('Pick an emoji…', $fbt); + } + public function testHtmlBreak() { $fbt = <<