Skip to content

LanguageCode Criterion

The LanguageCode Search Criterion searches for content based on whether it's translated into the selected language.

Arguments

  • value - string(s) representing the language codes to search for
  • (optional) matchAlwaysAvailable - bool representing whether content with the alwaysAvailable flag should be returned even if it doesn't contain the selected language (default true)

Example

PHP

1
2
3
4
5
use Ibexa\Contracts\Core\Repository\Values\Content\Query;
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;

$query = new Query();
$query->query = new Criterion\LanguageCode('ger-DE', false);

REST API

1
2
3
4
5
<Query>
    <Filter>
        <LanguageCodeCriterion>eng-GB</LanguageCodeCriterion>
    </Filter>
</Query>
1
2
3
4
5
"Query": {
    "Filter": {
        "LanguageCodeCriterion": "eng-GB"
    }
}

Use case

You can use the LanguageCode Criterion to search for articles that are lacking a translation into a specific language:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use Ibexa\Contracts\Core\Repository\Values\Content\LocationQuery;
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;

$query = new LocationQuery();
$query->query = new Criterion\LogicalAnd(
    [
    new Criterion\ContentTypeIdentifier('article'),
    new Criterion\LogicalNot(
        new Criterion\LanguageCode('ger-DE', false)
    ),
    ]
);

/** @var \Ibexa\Contracts\Core\Repository\SearchService $searchService */
$results = $searchService->findContent($query);
$articlesToTranslate = [];
foreach ($results->searchHits as $searchHit) {
    $articlesToTranslate[] = $searchHit;
}

return $articlesToTranslate;