xref: /php-src/ext/intl/php_intl.stub.php (revision 44e8301c)
1<?php
2
3/** @generate-class-entries */
4
5/**
6 * @var int
7 * @cvalue INTL_MAX_LOCALE_LEN
8 */
9const INTL_MAX_LOCALE_LEN = UNKNOWN;
10/**
11 * @var string
12 * @cvalue U_ICU_VERSION
13 */
14const INTL_ICU_VERSION = UNKNOWN;
15#ifdef U_ICU_DATA_VERSION
16/**
17 * @var string
18 * @cvalue U_ICU_DATA_VERSION
19 */
20const INTL_ICU_DATA_VERSION = UNKNOWN;
21#endif
22
23/**
24 * @var int
25 * @cvalue GRAPHEME_EXTRACT_TYPE_COUNT
26 */
27const GRAPHEME_EXTR_COUNT = UNKNOWN;
28/**
29 * @var int
30 * @cvalue GRAPHEME_EXTRACT_TYPE_MAXBYTES
31 */
32const GRAPHEME_EXTR_MAXBYTES = UNKNOWN;
33/**
34 * @var int
35 * @cvalue GRAPHEME_EXTRACT_TYPE_MAXCHARS
36 */
37const GRAPHEME_EXTR_MAXCHARS = UNKNOWN;
38
39/**
40 * Option to prohibit processing of unassigned codepoints in the input and
41 * do not check if the input conforms to STD-3 ASCII rules.
42 * @var int
43 * @cvalue UIDNA_DEFAULT
44 */
45const IDNA_DEFAULT = UNKNOWN;
46
47/**
48 * Option to allow processing of unassigned codepoints in the input
49 * @var int
50 * @cvalue UIDNA_ALLOW_UNASSIGNED
51 */
52const IDNA_ALLOW_UNASSIGNED = UNKNOWN;
53
54/**
55 * Option to check if input conforms to STD-3 ASCII rules
56 * @var int
57 * @cvalue UIDNA_USE_STD3_RULES
58 */
59const IDNA_USE_STD3_RULES = UNKNOWN;
60
61/**
62 * Option to check for whether the input conforms to the BiDi rules.
63 * Ignored by the IDNA2003 implementation. (IDNA2003 always performs a BiDi check.)
64 * @var int
65 * @cvalue UIDNA_CHECK_BIDI
66 */
67const IDNA_CHECK_BIDI = UNKNOWN;
68
69/**
70 * Option to check for whether the input conforms to the CONTEXTJ rules.
71 * Ignored by the IDNA2003 implementation. (The CONTEXTJ check is new in IDNA2008.)
72 * @var int
73 * @cvalue UIDNA_CHECK_CONTEXTJ
74 */
75const IDNA_CHECK_CONTEXTJ = UNKNOWN;
76
77/**
78 * Option for nontransitional processing in ToASCII().
79 * By default, ToASCII() uses transitional processing.
80 * Ignored by the IDNA2003 implementation.
81 * @var int
82 * @cvalue UIDNA_NONTRANSITIONAL_TO_ASCII
83 */
84const IDNA_NONTRANSITIONAL_TO_ASCII = UNKNOWN;
85
86/**
87 * Option for nontransitional processing in ToUnicode().
88 * By default, ToUnicode() uses transitional processing.
89 * Ignored by the IDNA2003 implementation.
90 * @var int
91 * @cvalue UIDNA_NONTRANSITIONAL_TO_UNICODE
92 */
93const IDNA_NONTRANSITIONAL_TO_UNICODE = UNKNOWN;
94
95/* VARIANTS */
96
97/**
98 * @var int
99 * @cvalue INTL_IDN_VARIANT_UTS46
100 */
101const INTL_IDNA_VARIANT_UTS46 = UNKNOWN;
102
103/* PINFO ERROR CODES */
104/**
105 * @var int
106 * @cvalue UIDNA_ERROR_EMPTY_LABEL
107 */
108const IDNA_ERROR_EMPTY_LABEL = UNKNOWN;
109/**
110 * @var int
111 * @cvalue UIDNA_ERROR_LABEL_TOO_LONG
112 */
113const IDNA_ERROR_LABEL_TOO_LONG = UNKNOWN;
114/**
115 * @var int
116 * @cvalue UIDNA_ERROR_DOMAIN_NAME_TOO_LONG
117 */
118const IDNA_ERROR_DOMAIN_NAME_TOO_LONG = UNKNOWN;
119/**
120 * @var int
121 * @cvalue UIDNA_ERROR_LEADING_HYPHEN
122 */
123const IDNA_ERROR_LEADING_HYPHEN = UNKNOWN;
124/**
125 * @var int
126 * @cvalue UIDNA_ERROR_TRAILING_HYPHEN
127 */
128const IDNA_ERROR_TRAILING_HYPHEN = UNKNOWN;
129/**
130 * @var int
131 * @cvalue UIDNA_ERROR_HYPHEN_3_4
132 */
133const IDNA_ERROR_HYPHEN_3_4 = UNKNOWN;
134/**
135 * @var int
136 * @cvalue UIDNA_ERROR_LEADING_COMBINING_MARK
137 */
138const IDNA_ERROR_LEADING_COMBINING_MARK = UNKNOWN;
139/**
140 * @var int
141 * @cvalue UIDNA_ERROR_DISALLOWED
142 */
143const IDNA_ERROR_DISALLOWED = UNKNOWN;
144/**
145 * @var int
146 * @cvalue UIDNA_ERROR_PUNYCODE
147 */
148const IDNA_ERROR_PUNYCODE = UNKNOWN;
149/**
150 * @var int
151 * @cvalue UIDNA_ERROR_LABEL_HAS_DOT
152 */
153const IDNA_ERROR_LABEL_HAS_DOT = UNKNOWN;
154/**
155 * @var int
156 * @cvalue UIDNA_ERROR_INVALID_ACE_LABEL
157 */
158const IDNA_ERROR_INVALID_ACE_LABEL = UNKNOWN;
159/**
160 * @var int
161 * @cvalue UIDNA_ERROR_BIDI
162 */
163const IDNA_ERROR_BIDI = UNKNOWN;
164/**
165 * @var int
166 * @cvalue UIDNA_ERROR_CONTEXTJ
167 */
168const IDNA_ERROR_CONTEXTJ = UNKNOWN;
169
170class IntlException extends Exception
171{
172}
173
174/* calendar */
175
176/** @param IntlTimeZone|DateTimeZone|string|null $timezone */
177function intlcal_create_instance($timezone = null, ?string $locale = null): ?IntlCalendar {}
178
179function intlcal_get_keyword_values_for_locale(string $keyword, string $locale, bool $onlyCommon): IntlIterator|false {}
180
181function intlcal_get_now(): float {}
182
183/**
184 * @return array<int, string>
185 * @refcount 1
186 */
187function intlcal_get_available_locales(): array {}
188
189function intlcal_get(IntlCalendar $calendar, int $field): int|false {}
190
191function intlcal_get_time(IntlCalendar $calendar): float|false {}
192
193function intlcal_set_time(IntlCalendar $calendar, float $timestamp): bool {}
194
195function intlcal_add(IntlCalendar $calendar, int $field, int $value): bool {}
196
197/** @param IntlTimeZone|DateTimeZone|string|null $timezone */
198function intlcal_set_time_zone(IntlCalendar $calendar, $timezone): bool {}
199
200function intlcal_after(IntlCalendar $calendar, IntlCalendar $other): bool {}
201
202function intlcal_before(IntlCalendar $calendar, IntlCalendar $other): bool {}
203
204/** @deprecated */
205function intlcal_set(IntlCalendar $calendar, int $year, int $month, int $dayOfMonth = UNKNOWN, int $hour = UNKNOWN, int $minute = UNKNOWN, int $second = UNKNOWN): true {}
206
207/** @param int|bool $value */
208function intlcal_roll(IntlCalendar $calendar, int $field, $value): bool {}
209
210function intlcal_clear(IntlCalendar $calendar, ?int $field = null): true {}
211
212function intlcal_field_difference(IntlCalendar $calendar, float $timestamp, int $field): int|false {}
213
214function intlcal_get_actual_maximum(IntlCalendar $calendar, int $field): int|false {}
215
216function intlcal_get_actual_minimum(IntlCalendar $calendar, int $field): int|false {}
217
218function intlcal_get_day_of_week_type(IntlCalendar $calendar, int $dayOfWeek): int|false {}
219
220function intlcal_get_first_day_of_week(IntlCalendar $calendar): int|false {}
221
222function intlcal_get_least_maximum(IntlCalendar $calendar, int $field): int|false {}
223
224function intlcal_get_greatest_minimum(IntlCalendar $calendar, int $field): int|false {}
225
226function intlcal_get_locale(IntlCalendar $calendar, int $type): string|false {}
227
228function intlcal_get_maximum(IntlCalendar $calendar, int $field): int|false {}
229
230function intlcal_get_minimal_days_in_first_week(IntlCalendar $calendar): int|false {}
231
232function intlcal_set_minimal_days_in_first_week(IntlCalendar $calendar, int $days): true {}
233
234function intlcal_get_minimum(IntlCalendar $calendar, int $field): int|false {}
235
236function intlcal_get_time_zone(IntlCalendar $calendar): IntlTimeZone|false {}
237
238function intlcal_get_type(IntlCalendar $calendar): string {}
239
240function intlcal_get_weekend_transition(IntlCalendar $calendar, int $dayOfWeek): int|false {}
241
242function intlcal_in_daylight_time(IntlCalendar $calendar): bool {}
243
244function intlcal_is_lenient(IntlCalendar $calendar): bool {}
245
246function intlcal_is_set(IntlCalendar $calendar, int $field): bool {}
247
248function intlcal_is_equivalent_to(IntlCalendar $calendar, IntlCalendar $other): bool {}
249
250function intlcal_is_weekend(IntlCalendar $calendar, ?float $timestamp = null): bool {}
251
252function intlcal_set_first_day_of_week(IntlCalendar $calendar, int $dayOfWeek): true {}
253
254function intlcal_set_lenient(IntlCalendar $calendar, bool $lenient): true {}
255
256function intlcal_get_repeated_wall_time_option(IntlCalendar $calendar): int {}
257
258function intlcal_equals(IntlCalendar $calendar, IntlCalendar $other): bool {}
259
260function intlcal_get_skipped_wall_time_option(IntlCalendar $calendar): int {}
261
262function intlcal_set_repeated_wall_time_option(IntlCalendar $calendar, int $option): true {}
263
264function intlcal_set_skipped_wall_time_option(IntlCalendar $calendar, int $option): true {}
265
266function intlcal_from_date_time(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar {}
267
268function intlcal_to_date_time(IntlCalendar $calendar): DateTime|false {}
269
270function intlcal_get_error_code(IntlCalendar $calendar): int|false {}
271
272function intlcal_get_error_message(IntlCalendar $calendar): string|false {}
273
274/**
275 * @param DateTimeZone|IntlTimeZone|string|int|null $timezoneOrYear
276 * @param string|int|null $localeOrMonth
277 * @param int $day
278 * @param int $hour
279 * @param int $minute
280 * @param int $second
281 * @deprecated
282 */
283function intlgregcal_create_instance($timezoneOrYear = UNKNOWN, $localeOrMonth = UNKNOWN, $day = UNKNOWN, $hour = UNKNOWN, $minute = UNKNOWN, $second = UNKNOWN): ?IntlGregorianCalendar {}
284
285function intlgregcal_set_gregorian_change(IntlGregorianCalendar $calendar, float $timestamp): bool {}
286
287function intlgregcal_get_gregorian_change(IntlGregorianCalendar $calendar): float {}
288
289function intlgregcal_is_leap_year(IntlGregorianCalendar $calendar, int $year): bool {}
290
291/* collator */
292
293function collator_create(string $locale): ?Collator {}
294
295function collator_compare(Collator $object, string $string1, string $string2): int|false {}
296
297function collator_get_attribute(Collator $object, int $attribute): int|false {}
298
299function collator_set_attribute(Collator $object, int $attribute, int $value): bool {}
300
301function collator_get_strength(Collator $object): int {}
302
303function collator_set_strength(Collator $object, int $strength): true {}
304
305function collator_sort(Collator $object, array &$array, int $flags = Collator::SORT_REGULAR): bool {}
306
307function collator_sort_with_sort_keys(Collator $object, array &$array): bool {}
308
309function collator_asort(Collator $object, array &$array, int $flags = Collator::SORT_REGULAR): bool {}
310
311function collator_get_locale(Collator $object, int $type): string|false {}
312
313function collator_get_error_code(Collator $object): int|false {}
314
315function collator_get_error_message(Collator $object): string|false {}
316
317function collator_get_sort_key(Collator $object, string $string): string|false {}
318
319/* common */
320
321function intl_get_error_code(): int {}
322
323function intl_get_error_message(): string {}
324
325function intl_is_failure(int $errorCode): bool {}
326
327function intl_error_name(int $errorCode): string {}
328
329/* dateformat */
330
331/** @param IntlTimeZone|DateTimeZone|string|null $timezone */
332function datefmt_create(
333    ?string $locale,
334    int $dateType = IntlDateFormatter::FULL,
335    int $timeType = IntlDateFormatter::FULL,
336    $timezone = null,
337    IntlCalendar|int|null $calendar = null,
338    ?string $pattern = null
339): ?IntlDateFormatter {}
340
341function datefmt_get_datetype(IntlDateFormatter $formatter): int|false {}
342
343function datefmt_get_timetype(IntlDateFormatter $formatter): int|false {}
344
345function datefmt_get_calendar(IntlDateFormatter $formatter): int|false {}
346
347function datefmt_set_calendar(IntlDateFormatter $formatter, IntlCalendar|int|null $calendar): bool {}
348
349function datefmt_get_timezone_id(IntlDateFormatter $formatter): string|false {}
350
351function datefmt_get_calendar_object(IntlDateFormatter $formatter): IntlCalendar|false|null {}
352
353function datefmt_get_timezone(IntlDateFormatter $formatter): IntlTimeZone|false {}
354
355/** @param IntlTimeZone|DateTimeZone|string|null $timezone */
356function datefmt_set_timezone(IntlDateFormatter $formatter, $timezone): bool {}
357
358function datefmt_set_pattern(IntlDateFormatter $formatter, string $pattern): bool {}
359
360function datefmt_get_pattern(IntlDateFormatter $formatter): string|false {}
361
362function datefmt_get_locale(IntlDateFormatter $formatter, int $type = ULOC_ACTUAL_LOCALE): string|false {}
363
364function datefmt_set_lenient(IntlDateFormatter $formatter, bool $lenient): void {}
365
366function datefmt_is_lenient(IntlDateFormatter $formatter): bool {}
367
368/** @param IntlCalendar|DateTimeInterface|array|string|int|float $datetime */
369function datefmt_format(IntlDateFormatter $formatter, $datetime): string|false {}
370
371/**
372 * @param IntlCalendar|DateTimeInterface $datetime
373 * @param array|int|string|null $format
374 */
375function datefmt_format_object($datetime, $format = null, ?string $locale = null): string|false {}
376
377/** @param int $offset */
378function datefmt_parse(IntlDateFormatter $formatter, string $string, &$offset = null): int|float|false {}
379
380/**
381 * @param int $offset
382 * @return array<string, int>|false
383 * @refcount 1
384 */
385function datefmt_localtime(IntlDateFormatter $formatter, string $string, &$offset = null): array|false {}
386
387function datefmt_get_error_code(IntlDateFormatter $formatter): int {}
388
389function datefmt_get_error_message(IntlDateFormatter $formatter): string {}
390
391/* formatter */
392
393function numfmt_create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter {}
394
395function numfmt_format(NumberFormatter $formatter, int|float $num, int $type = NumberFormatter::TYPE_DEFAULT): string|false {}
396
397/** @param int $offset */
398function numfmt_parse(NumberFormatter $formatter, string $string, int $type = NumberFormatter::TYPE_DOUBLE, &$offset = null): int|float|false {}
399
400function numfmt_format_currency(NumberFormatter $formatter, float $amount, string $currency): string|false {}
401
402/**
403 * @param string $currency
404 * @param int $offset
405 */
406function numfmt_parse_currency(NumberFormatter $formatter, string $string, &$currency, &$offset = null): float|false {}
407
408function numfmt_set_attribute(NumberFormatter $formatter, int $attribute, int|float $value): bool {}
409
410function numfmt_get_attribute(NumberFormatter $formatter, int $attribute): int|float|false {}
411
412function numfmt_set_text_attribute(NumberFormatter $formatter, int $attribute, string $value): bool {}
413
414function numfmt_get_text_attribute(NumberFormatter $formatter, int $attribute): string|false {}
415
416function numfmt_set_symbol(NumberFormatter $formatter, int $symbol, string $value): bool {}
417
418function numfmt_get_symbol(NumberFormatter $formatter, int $symbol): string|false {}
419
420function numfmt_set_pattern(NumberFormatter $formatter, string $pattern): bool {}
421
422function numfmt_get_pattern(NumberFormatter $formatter): string|false {}
423
424function numfmt_get_locale(NumberFormatter $formatter, int $type = ULOC_ACTUAL_LOCALE): string|false {}
425
426function numfmt_get_error_code(NumberFormatter $formatter): int {}
427
428function numfmt_get_error_message(NumberFormatter $formatter): string {}
429
430/* grapheme */
431
432function grapheme_strlen(string $string): int|false|null {}
433
434function grapheme_strpos(string $haystack, string $needle, int $offset = 0): int|false {}
435
436function grapheme_stripos(string $haystack, string $needle, int $offset = 0): int|false {}
437
438function grapheme_strrpos(string $haystack, string $needle, int $offset = 0): int|false {}
439
440function grapheme_strripos(string $haystack, string $needle, int $offset = 0): int|false {}
441
442function grapheme_substr(string $string, int $offset, ?int $length = null): string|false {}
443
444function grapheme_strstr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {}
445
446function grapheme_stristr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {}
447
448function grapheme_str_split(string $string, int $length = 1): array|false {}
449
450/** @param int $next */
451function grapheme_extract(string $haystack, int $size, int $type = GRAPHEME_EXTR_COUNT, int $offset = 0, &$next = null): string|false {}
452
453/* idn */
454
455/** @param array $idna_info */
456function idn_to_ascii(string $domain, int $flags = IDNA_DEFAULT, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false {}
457
458/** @param array $idna_info */
459function idn_to_utf8(string $domain, int $flags = IDNA_DEFAULT, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false {}
460
461/* locale */
462
463
464function locale_get_default(): string {}
465
466function locale_set_default(string $locale): true {}
467
468function locale_get_primary_language(string $locale): ?string {}
469
470function locale_get_script(string $locale): ?string {}
471
472function locale_get_region(string $locale): ?string {}
473
474/**
475 * @return array<string, string>|false|null
476 * @refcount 1
477 */
478function locale_get_keywords(string $locale): array|false|null {}
479
480function locale_get_display_script(string $locale, ?string $displayLocale = null): string|false {}
481
482function locale_get_display_region(string $locale, ?string $displayLocale = null): string|false {}
483
484function locale_get_display_name(string $locale, ?string $displayLocale = null): string|false {}
485
486function locale_get_display_language(string $locale, ?string $displayLocale = null): string|false {}
487
488function locale_get_display_variant(string $locale, ?string $displayLocale = null): string|false {}
489
490function locale_compose(array $subtags): string|false {}
491
492function locale_parse(string $locale): ?array {}
493
494function locale_get_all_variants(string $locale): ?array {}
495
496function locale_filter_matches(string $languageTag, string $locale, bool $canonicalize = false): ?bool {}
497
498function locale_canonicalize(string $locale): ?string {}
499
500function locale_lookup(array $languageTag, string $locale, bool $canonicalize = false, ?string $defaultLocale = null): ?string {}
501
502function locale_accept_from_http(string $header): string|false {}
503
504/* msgformat */
505
506function msgfmt_create(string $locale, string $pattern): ?MessageFormatter {}
507
508function msgfmt_format(MessageFormatter $formatter, array $values): string|false {}
509
510function msgfmt_format_message(string $locale, string $pattern, array $values): string|false {}
511
512/**
513 * @return array<int, int|float|string>|false
514 * @refcount 1
515 */
516function msgfmt_parse(MessageFormatter $formatter, string $string): array|false {}
517
518/**
519 * @return array<int, int|float|string>|false
520 * @refcount 1
521 */
522function msgfmt_parse_message(string $locale, string $pattern, string $message): array|false {}
523
524function msgfmt_set_pattern(MessageFormatter $formatter, string $pattern): bool {}
525
526function msgfmt_get_pattern(MessageFormatter $formatter): string|false {}
527
528function msgfmt_get_locale(MessageFormatter $formatter): string {}
529
530function msgfmt_get_error_code(MessageFormatter $formatter): int {}
531
532function msgfmt_get_error_message(MessageFormatter $formatter): string {}
533
534/* normalizer */
535
536function normalizer_normalize(string $string, int $form = Normalizer::FORM_C): string|false {}
537
538function normalizer_is_normalized(string $string, int $form = Normalizer::FORM_C): bool {}
539
540#if U_ICU_VERSION_MAJOR_NUM >= 56
541function normalizer_get_raw_decomposition(string $string, int $form = Normalizer::FORM_C): ?string {}
542#endif
543
544/* resourceboundle */
545
546function resourcebundle_create(?string $locale, ?string $bundle, bool $fallback = true): ?ResourceBundle {}
547
548function resourcebundle_get(ResourceBundle $bundle, string|int $index, bool $fallback = true): ResourceBundle|array|string|int|null {}
549
550function resourcebundle_count(ResourceBundle $bundle): int {}
551
552/**
553 * @return array<int, string>|false
554 * @refcount 1
555 */
556function resourcebundle_locales(string $bundle): array|false {}
557
558function resourcebundle_get_error_code(ResourceBundle $bundle): int {}
559
560function resourcebundle_get_error_message(ResourceBundle $bundle): string {}
561
562/* timezone */
563
564function intltz_count_equivalent_ids(string $timezoneId): int|false {}
565
566function intltz_create_default(): IntlTimeZone {}
567
568/** @param IntlTimeZone|string|int|float|null $countryOrRawOffset */
569function intltz_create_enumeration($countryOrRawOffset = null): IntlIterator|false {}
570
571function intltz_create_time_zone(string $timezoneId): ?IntlTimeZone {}
572
573function intltz_create_time_zone_id_enumeration(int $type, ?string $region = null, ?int $rawOffset = null): IntlIterator|false {}
574
575function intltz_from_date_time_zone(DateTimeZone $timezone): ?IntlTimeZone {}
576
577/** @param bool $isSystemId */
578function intltz_get_canonical_id(string $timezoneId, &$isSystemId = null): string|false {}
579
580function intltz_get_display_name(IntlTimeZone $timezone, bool $dst = false, int $style = IntlTimeZone::DISPLAY_LONG, ?string $locale = null): string|false {}
581
582function intltz_get_dst_savings(IntlTimeZone $timezone): int {}
583
584function intltz_get_equivalent_id(string $timezoneId, int $offset): string|false {}
585
586function intltz_get_error_code(IntlTimeZone $timezone): int|false {}
587
588function intltz_get_error_message(IntlTimeZone $timezone): string|false {}
589
590function intltz_get_gmt(): IntlTimeZone {}
591
592function intltz_get_id(IntlTimeZone $timezone): string|false {}
593
594/**
595 * @param int $rawOffset
596 * @param int $dstOffset
597 */
598function intltz_get_offset(IntlTimeZone $timezone, float $timestamp, bool $local, &$rawOffset, &$dstOffset): bool {}
599
600function intltz_get_raw_offset(IntlTimeZone $timezone): int {}
601
602function intltz_get_region(string $timezoneId): string|false {}
603
604function intltz_get_tz_data_version(): string|false {}
605
606function intltz_get_unknown(): IntlTimeZone {}
607
608#if U_ICU_VERSION_MAJOR_NUM >= 52
609function intltz_get_windows_id(string $timezoneId): string|false {}
610
611function intltz_get_id_for_windows_id(string $timezoneId, ?string $region = null): string|false {}
612#endif
613
614function intltz_has_same_rules(IntlTimeZone $timezone, IntlTimeZone $other): bool {}
615
616function intltz_to_date_time_zone(IntlTimeZone $timezone): DateTimeZone|false {}
617
618function intltz_use_daylight_time(IntlTimeZone $timezone): bool {}
619
620#if U_ICU_VERSION_MAJOR_NUM >= 74
621function intltz_get_iana_id(string $timezoneId): string|false {}
622#endif
623
624/* transliterator */
625
626function transliterator_create(string $id, int $direction = Transliterator::FORWARD): ?Transliterator {}
627
628function transliterator_create_from_rules(string $rules, int $direction = Transliterator::FORWARD): ?Transliterator {}
629
630/**
631 * @return array<int, string>|false
632 * @refcount 1
633 */
634function transliterator_list_ids(): array|false {}
635
636function transliterator_create_inverse(Transliterator $transliterator): ?Transliterator {}
637
638function transliterator_transliterate(Transliterator|string $transliterator, string $string, int $start = 0, int $end = -1): string|false {}
639
640function transliterator_get_error_code(Transliterator $transliterator): int|false {}
641
642function transliterator_get_error_message(Transliterator $transliterator): string|false {}
643