@@ -507,6 +507,101 @@ requested during the program execution. You can also create lazy strings from a
507
507
// hash computation only if it's needed
508
508
$lazyHash = LazyString::fromStringable(new Hash());
509
509
510
+ Working with Emojis
511
+ -------------------
512
+
513
+ .. versionadded :: 7.1
514
+
515
+ The emoji component was introduced in Symfony 7.1.
516
+
517
+ Symfony provides several utilities to work with emoji characters and sequences
518
+ from the `Unicode CLDR dataset `_. They are available via the Emoji component,
519
+ which you must first install in your application:
520
+
521
+ .. code-block :: terminal
522
+
523
+ $ composer require symfony/emoji
524
+
525
+ The data needed to store the transliteration of all emojis (~5,000) into all
526
+ languages take a considerable disk space.
527
+
528
+ If you need to save disk space (e.g. because you deploy to some service with tight
529
+ size constraints), run this command (e.g. as an automated script after ``composer install ``)
530
+ to compress the internal Symfony emoji data files using the PHP ``zlib `` extension:
531
+
532
+ .. code-block :: terminal
533
+
534
+ # adjust the path to the 'compress' binary based on your application installation
535
+ $ php ./vendor/symfony/emoji/Resources/bin/compress
536
+
537
+ .. _string-emoji-transliteration :
538
+
539
+ Emoji Transliteration
540
+ ~~~~~~~~~~~~~~~~~~~~~
541
+
542
+ The ``EmojiTransliterator `` class offers a way to translate emojis into their
543
+ textual representation in all languages based on the `Unicode CLDR dataset `_::
544
+
545
+ use Symfony\Component\Emoji\EmojiTransliterator;
546
+
547
+ // Describe emojis in English
548
+ $transliterator = EmojiTransliterator::create('en');
549
+ $transliterator->transliterate('Menus with 🍕 or 🍝');
550
+ // => 'Menus with pizza or spaghetti'
551
+
552
+ // Describe emojis in Ukrainian
553
+ $transliterator = EmojiTransliterator::create('uk');
554
+ $transliterator->transliterate('Menus with 🍕 or 🍝');
555
+ // => 'Menus with піца or спагеті'
556
+
557
+
558
+ The ``EmojiTransliterator `` also provides special locales that convert emojis to
559
+ short codes and vice versa in specific platforms, such as GitHub and Slack.
560
+
561
+ GitHub Emoji Transliteration
562
+ ............................
563
+
564
+ Convert GitHub emojis to short codes with the ``emoji-github `` locale::
565
+
566
+ $transliterator = EmojiTransliterator::create('emoji-github');
567
+ $transliterator->transliterate('Teenage 🐢 really love 🍕');
568
+ // => 'Teenage :turtle: really love :pizza:'
569
+
570
+ Convert GitHub short codes to emojis with the ``github-emoji `` locale::
571
+
572
+ $transliterator = EmojiTransliterator::create('github-emoji');
573
+ $transliterator->transliterate('Teenage :turtle: really love :pizza:');
574
+ // => 'Teenage 🐢 really love 🍕'
575
+
576
+ Slack Emoji Transliteration
577
+ ...........................
578
+
579
+ Convert Slack emojis to short codes with the ``emoji-slack `` locale::
580
+
581
+ $transliterator = EmojiTransliterator::create('emoji-slack');
582
+ $transliterator->transliterate('Menus with 🥗 or 🧆');
583
+ // => 'Menus with :green_salad: or :falafel:'
584
+
585
+ Convert Slack short codes to emojis with the ``slack-emoji `` locale::
586
+
587
+ $transliterator = EmojiTransliterator::create('slack-emoji');
588
+ $transliterator->transliterate('Menus with :green_salad: or :falafel:');
589
+ // => 'Menus with 🥗 or 🧆'
590
+
591
+ Removing Emojis
592
+ ~~~~~~~~~~~~~~~
593
+
594
+ The ``EmojiTransliterator `` can also be used to remove all emojis from a string,
595
+ via the special ``strip `` locale::
596
+
597
+ use Symfony\Component\Emoji\EmojiTransliterator;
598
+
599
+ $transliterator = EmojiTransliterator::create('strip');
600
+ $transliterator->transliterate('🎉Hey!🥳 🎁Happy Birthday!🎁');
601
+ // => 'Hey! Happy Birthday!'
602
+
603
+ .. _string-slugger :
604
+
510
605
Slugger
511
606
-------
512
607
@@ -579,7 +674,8 @@ the injected slugger is the same as the request locale::
579
674
Slug Emojis
580
675
~~~~~~~~~~~
581
676
582
- You can transform any emojis into their textual representation::
677
+ You can also combine the :ref: `emoji transliterator <string-emoji-transliteration >`
678
+ with the slugger to transform any emojis into their textual representation::
583
679
584
680
use Symfony\Component\String\Slugger\AsciiSlugger;
585
681
@@ -648,3 +744,4 @@ possible to determine a unique singular/plural form for the given word.
648
744
.. _`Code points` : https://en.wikipedia.org/wiki/Code_point
649
745
.. _`Grapheme clusters` : https://en.wikipedia.org/wiki/Grapheme
650
746
.. _`Unicode equivalence` : https://en.wikipedia.org/wiki/Unicode_equivalence
747
+ .. _`Unicode CLDR dataset` : https://github.com/unicode-org/cldr
0 commit comments