1414namespace Pimcore \Bundle \StudioBackendBundle \Grid \Util \Trait ;
1515
1616use Pimcore \Bundle \StudioBackendBundle \Grid \Schema \Column ;
17+ use Pimcore \Model \DataObject \Localizedfield ;
1718use Pimcore \Model \Element \ElementInterface ;
18- use Pimcore \Tool ;
1919
2020/**
2121 * @internal
@@ -25,32 +25,20 @@ trait LocalizedValueTrait
2525 private function getLocalizedValue (Column $ column , ElementInterface $ element ): mixed
2626 {
2727 $ getter = $ this ->getGetter ($ column ->getKey ());
28- if ($ column ->getLocale ()) {
29- $ value = $ element ->$ getter ($ column ->getLocale ());
28+ if (!$ column ->getLocale ()) {
29+ return $ element ->$ getter ();
30+ }
3031
31- if ($ column ->getApplyFallbackLanguages () && $ this ->isEmptyValue ($ value )) {
32- // Walk configured fallback languages, then the system default as last resort
33- $ fallbackLocales = Tool::getFallbackLanguagesFor ($ column ->getLocale ());
34- $ defaultLanguage = Tool::getDefaultLanguage ();
35- if ($ defaultLanguage !== null
36- && $ defaultLanguage !== $ column ->getLocale ()
37- && !in_array ($ defaultLanguage , $ fallbackLocales , true )
38- ) {
39- $ fallbackLocales [] = $ defaultLanguage ;
40- }
32+ $ value = $ element ->$ getter ($ column ->getLocale ());
4133
42- foreach ($ fallbackLocales as $ fallbackLocale ) {
43- $ value = $ element ->$ getter ($ fallbackLocale );
44- if (!$ this ->isEmptyValue ($ value )) {
45- break ;
46- }
47- }
34+ if ($ this ->isEmptyValue ($ value ) && Localizedfield::doGetFallbackValues ()) {
35+ $ defaultLanguage = $ this ->getDefaultLanguage ();
36+ if ($ defaultLanguage !== null && $ defaultLanguage !== $ column ->getLocale ()) {
37+ $ value = $ element ->$ getter ($ defaultLanguage );
4838 }
49-
50- return $ value ;
5139 }
5240
53- return $ element -> $ getter () ;
41+ return $ value ;
5442 }
5543
5644 private function getLocalizedValueFromKey (string $ key , ?string $ locale , ElementInterface $ element ): mixed
@@ -70,6 +58,11 @@ private function getGetter(string $key): string
7058
7159 private function isEmptyValue (mixed $ value ): bool
7260 {
73- return $ value === null || $ value === '' || $ value === [];
61+ return $ value === null || $ value === '' ;
62+ }
63+
64+ protected function getDefaultLanguage (): ?string
65+ {
66+ return null ;
7467 }
7568}
0 commit comments