Skip to content

Commit cbffb05

Browse files
committed
fix: the way to get the translation
1 parent d663430 commit cbffb05

File tree

6 files changed

+49
-49
lines changed

6 files changed

+49
-49
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,12 @@ $options = ContactType::options(label: 'description', locale: 'fr');
179179
The package automatically generates translation keys using this format:
180180

181181
```
182-
{EnumClass}.{label_type}.{case_name}
182+
enums.{EnumClass}.{label_type}.{case_name}
183183
```
184184

185185
For example:
186-
- `App\Enums\ContactType::EMAIL``App\Enums\ContactType.label.EMAIL`
187-
- With description: `App\Enums\ContactType.description.EMAIL`
186+
- `App\Enums\ContactType::EMAIL``enums.App\Enums\ContactType.label.EMAIL`
187+
- With description: `enums.App\Enums\ContactType.description.EMAIL`
188188

189189
### Utility Methods
190190

src/LocalizedEnum.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function label(?string $label = null, ?string $locale = null): string
2929
protected function getLocalizationKey(?string $label = null): string
3030
{
3131
$labelType = $label ?: 'label';
32-
return static::class . '.' . $labelType . '.' . $this->name;
32+
return 'enums.' . static::class . '.' . $labelType . '.' . $this->name;
3333
}
3434

3535
/**

tests/FallbackTest.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
it('falls back to case name when translation key does not exist', function () {
1414
// Set up some translations but not for the requested label type
1515
$this->app['translator']->addLines([
16-
TestEnum::class . '.label.FIRST' => 'First Option',
17-
TestEnum::class . '.label.SECOND' => 'Second Option',
16+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
17+
'enums.' . TestEnum::class . '.label.SECOND' => 'Second Option',
1818
], 'en');
1919

2020
// Existing translations should work
@@ -28,9 +28,9 @@
2828
it('falls back to case name when custom label type does not exist', function () {
2929
// Set up basic translations
3030
$this->app['translator']->addLines([
31-
TestEnum::class . '.label.FIRST' => 'First Option',
32-
TestEnum::class . '.label.SECOND' => 'Second Option',
33-
TestEnum::class . '.label.THIRD' => 'Third Option',
31+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
32+
'enums.' . TestEnum::class . '.label.SECOND' => 'Second Option',
33+
'enums.' . TestEnum::class . '.label.THIRD' => 'Third Option',
3434
], 'en');
3535

3636
// Default labels should work
@@ -44,8 +44,8 @@
4444
it('falls back to case name when locale does not exist', function () {
4545
// Set up English translations only
4646
$this->app['translator']->addLines([
47-
TestEnum::class . '.label.FIRST' => 'Première Option',
48-
TestEnum::class . '.label.SECOND' => 'Deuxième Option',
47+
'enums.' . TestEnum::class . '.label.FIRST' => 'Première Option',
48+
'enums.' . TestEnum::class . '.label.SECOND' => 'Deuxième Option',
4949
], 'fr');
5050

5151
// Set default locale to something without translations
@@ -62,7 +62,7 @@
6262
it('maintains fallback behavior in forSelect method', function () {
6363
// Set up partial translations
6464
$this->app['translator']->addLines([
65-
TestEnum::class . '.label.FIRST' => 'First Option',
65+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
6666
// SECOND and THIRD are missing
6767
], 'en');
6868

@@ -78,7 +78,7 @@
7878
it('maintains fallback behavior in options method', function () {
7979
// Set up partial translations
8080
$this->app['translator']->addLines([
81-
StatusEnum::class . '.label.ACTIVE' => 'Active Status',
81+
'enums.' . StatusEnum::class . '.label.ACTIVE' => 'Active Status',
8282
// INACTIVE is missing
8383
], 'en');
8484

@@ -93,9 +93,9 @@
9393
it('handles mixed translation availability gracefully', function () {
9494
// Set up mixed translations
9595
$this->app['translator']->addLines([
96-
TestEnum::class . '.label.FIRST' => 'First Option',
97-
TestEnum::class . '.label.THIRD' => 'Third Option',
98-
TestEnum::class . '.description.FIRST' => 'First description',
96+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
97+
'enums.' . TestEnum::class . '.label.THIRD' => 'Third Option',
98+
'enums.' . TestEnum::class . '.description.FIRST' => 'First description',
9999
// SECOND label and other descriptions are missing
100100
], 'en');
101101

tests/ForSelectTest.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
beforeEach(function () {
66
// Set up translations
77
$this->app['translator']->addLines([
8-
TestEnum::class . '.label.FIRST' => 'First Option',
9-
TestEnum::class . '.label.SECOND' => 'Second Option',
10-
TestEnum::class . '.label.THIRD' => 'Third Option',
11-
TestEnum::class . '.description.FIRST' => 'First option description',
12-
TestEnum::class . '.description.SECOND' => 'Second option description',
13-
TestEnum::class . '.description.THIRD' => 'Third option description',
8+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
9+
'enums.' . TestEnum::class . '.label.SECOND' => 'Second Option',
10+
'enums.' . TestEnum::class . '.label.THIRD' => 'Third Option',
11+
'enums.' . TestEnum::class . '.description.FIRST' => 'First option description',
12+
'enums.' . TestEnum::class . '.description.SECOND' => 'Second option description',
13+
'enums.' . TestEnum::class . '.description.THIRD' => 'Third option description',
1414
], 'en');
1515

1616
$this->app['translator']->addLines([
17-
TestEnum::class . '.label.FIRST' => 'Première Option',
18-
TestEnum::class . '.label.SECOND' => 'Deuxième Option',
19-
TestEnum::class . '.label.THIRD' => 'Troisième Option',
17+
'enums.' . TestEnum::class . '.label.FIRST' => 'Première Option',
18+
'enums.' . TestEnum::class . '.label.SECOND' => 'Deuxième Option',
19+
'enums.' . TestEnum::class . '.label.THIRD' => 'Troisième Option',
2020
], 'fr');
2121
});
2222

tests/LabelTest.php

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,25 @@
66
beforeEach(function () {
77
// Set up translations
88
$this->app['translator']->addLines([
9-
TestEnum::class . '.label.FIRST' => 'First Option',
10-
TestEnum::class . '.label.SECOND' => 'Second Option',
11-
TestEnum::class . '.label.THIRD' => 'Third Option',
12-
TestEnum::class . '.description.FIRST' => 'First option description',
13-
TestEnum::class . '.description.SECOND' => 'Second option description',
14-
TestEnum::class . '.description.THIRD' => 'Third option description',
15-
TestEnum::class . '.short.FIRST' => 'F',
16-
TestEnum::class . '.short.SECOND' => 'S',
17-
TestEnum::class . '.short.THIRD' => 'T',
9+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
10+
'enums.' . TestEnum::class . '.label.SECOND' => 'Second Option',
11+
'enums.' . TestEnum::class . '.label.THIRD' => 'Third Option',
12+
'enums.' . TestEnum::class . '.description.FIRST' => 'First option description',
13+
'enums.' . TestEnum::class . '.description.SECOND' => 'Second option description',
14+
'enums.' . TestEnum::class . '.description.THIRD' => 'Third option description',
15+
'enums.' . TestEnum::class . '.short.FIRST' => 'F',
16+
'enums.' . TestEnum::class . '.short.SECOND' => 'S',
17+
'enums.' . TestEnum::class . '.short.THIRD' => 'T',
1818
], 'en');
1919

2020
// Set up French translations
2121
$this->app['translator']->addLines([
22-
TestEnum::class . '.label.FIRST' => 'Première Option',
23-
TestEnum::class . '.label.SECOND' => 'Deuxième Option',
24-
TestEnum::class . '.label.THIRD' => 'Troisième Option',
25-
TestEnum::class . '.description.FIRST' => 'Description de la première option',
26-
TestEnum::class . '.description.SECOND' => 'Description de la deuxième option',
27-
TestEnum::class . '.description.THIRD' => 'Description de la troisième option',
22+
'enums.' . TestEnum::class . '.label.FIRST' => 'Première Option',
23+
'enums.' . TestEnum::class . '.label.SECOND' => 'Deuxième Option',
24+
'enums.' . TestEnum::class . '.label.THIRD' => 'Troisième Option',
25+
'enums.' . TestEnum::class . '.description.FIRST' => 'Description de la première option',
26+
'enums.' . TestEnum::class . '.description.SECOND' => 'Description de la deuxième option',
27+
'enums.' . TestEnum::class . '.description.THIRD' => 'Description de la troisième option',
2828
], 'fr');
2929
});
3030

@@ -69,7 +69,7 @@
6969
$method = $reflection->getMethod('getLocalizationKey');
7070
$method->setAccessible(true);
7171

72-
expect($method->invoke(TestEnum::FIRST))->toBe(TestEnum::class . '.label.FIRST');
73-
expect($method->invoke(TestEnum::FIRST, 'description'))->toBe(TestEnum::class . '.description.FIRST');
74-
expect($method->invoke(TestEnum::FIRST, 'custom'))->toBe(TestEnum::class . '.custom.FIRST');
72+
expect($method->invoke(TestEnum::FIRST))->toBe('enums.' . TestEnum::class . '.label.FIRST');
73+
expect($method->invoke(TestEnum::FIRST, 'description'))->toBe('enums.' . TestEnum::class . '.description.FIRST');
74+
expect($method->invoke(TestEnum::FIRST, 'custom'))->toBe('enums.' . TestEnum::class . '.custom.FIRST');
7575
});

tests/UtilityMethodsTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
beforeEach(function () {
66
// Set up translations
77
$this->app['translator']->addLines([
8-
TestEnum::class . '.label.FIRST' => 'First Option',
9-
TestEnum::class . '.label.SECOND' => 'Second Option',
10-
TestEnum::class . '.label.THIRD' => 'Third Option',
8+
'enums.' . TestEnum::class . '.label.FIRST' => 'First Option',
9+
'enums.' . TestEnum::class . '.label.SECOND' => 'Second Option',
10+
'enums.' . TestEnum::class . '.label.THIRD' => 'Third Option',
1111
], 'en');
1212
});
1313

@@ -81,9 +81,9 @@
8181
it('can generate options array with custom label type', function () {
8282
// Add description translations
8383
$this->app['translator']->addLines([
84-
TestEnum::class . '.description.FIRST' => 'First description',
85-
TestEnum::class . '.description.SECOND' => 'Second description',
86-
TestEnum::class . '.description.THIRD' => 'Third description',
84+
'enums.' . TestEnum::class . '.description.FIRST' => 'First description',
85+
'enums.' . TestEnum::class . '.description.SECOND' => 'Second description',
86+
'enums.' . TestEnum::class . '.description.THIRD' => 'Third description',
8787
], 'en');
8888

8989
$options = TestEnum::options('description');

0 commit comments

Comments
 (0)