Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
c4fb9ad
Migrate Language component to the Component Revision architecture and…
c-knof Sep 17, 2026
e3c841a
Language: Take RBAC from the component graph in the Activities
c-knof Oct 12, 2026
2293f12
Language: Take the database from the component graph
c-knof Oct 12, 2026
48187b5
Language: Read the languages for the Setup label from the Setup database
c-knof Oct 12, 2026
56075fb
Language: Take the installation root from `Directories`
c-knof Oct 12, 2026
a2da7be
Init: Drop the unused `ILIAS\Language\Language` entry from the legacy…
c-knof Oct 12, 2026
b0ccf7d
Language: Stop providing the installation repository and manager
c-knof Oct 12, 2026
d98749e
Language: Hand the language folder to the Activities as `LanguageFolder`
c-knof Oct 12, 2026
7975b5e
Language: Note the remaining legacy container use in the roadmap
c-knof Oct 12, 2026
42474e8
Language: Shorten the comments added by the Component Revision
c-knof Oct 13, 2026
41ffcfd
Language: Report Activity errors with status codes like the File Acti…
c-knof Oct 19, 2026
784b1b3
Language: Refuse the anonymous user and pass the user id inline like …
c-knof Oct 19, 2026
4a307c6
Language: Describe the Activities with the `DataFactory` and titled s…
c-knof Oct 19, 2026
66f9f07
Language: Bundle the legacy access of the Activities in a `Repository…
c-knof Oct 19, 2026
596ed6d
Language: Mask database errors whose code is a SQLSTATE string
c-knof Oct 19, 2026
7c986dd
Language: Shorten the comments of the Activities, their wiring and tests
c-knof Oct 19, 2026
5dd2e57
Language: Give the language service only to `AddLanguageEntry`
c-knof Oct 19, 2026
1d6be49
[FIX] File: take the current wording of could_not_create_file_objs
chfsx Oct 19, 2026
6d3707b
[REFACTOR] Language: add license header and restore @internal markers…
chfsx Oct 19, 2026
b3cd6fe
[FIX] Language: invalidate the translation cache when lng_modules cha…
chfsx Oct 19, 2026
c30d442
[REFACTOR] Language: assert the contributions of the component indepe…
chfsx Oct 19, 2026
c8fdc05
[REFACTOR] Language: hand the installation root to the repository ins…
chfsx Oct 19, 2026
ed1ced8
[REFACTOR] Language: take the settings of the Activities from a legac…
chfsx Oct 19, 2026
6a620ec
Language: Protect the table actions of `ilObjLanguageFolderGUI` again…
c-knof Oct 21, 2026
f1ddb1f
[FIX] Language: Load `ilLangDeprecated` through the autoloader in `il…
c-knof Oct 21, 2026
41ba103
Language: Remove the unreachable confirmation screens from `ilObjLang…
c-knof Oct 21, 2026
ef8bec5
Language: Pass the previous exception positionally in `GrindsFormInput`
c-knof Oct 22, 2026
6dfe897
Language: Expect the calls whose arguments the tests check
c-knof Oct 22, 2026
af31d69
Language: Mark the internal settings, cache and installation root typ…
c-knof Oct 22, 2026
5211992
File: Take the language files back into the global language files
c-knof Oct 12, 2026
0ca374c
Language: Maintain the translations of single modules in PO files
c-knof Oct 12, 2026
409df14
Language: Add ntxt() for plural forms of modules in PO files
c-knof Oct 12, 2026
9717066
Language: Add a tool that converts a module into PO files
c-knof Oct 12, 2026
599588c
TermsOfService: Serve the translations from PO files
c-knof Oct 12, 2026
c8beee3
Poll: Serve the translations from PO files
c-knof Oct 12, 2026
d61c8ff
Language: Add translate() with generated LanguageIdentifier enums
c-knof Oct 12, 2026
a7574c3
Language: Adapt the Activities to modules maintained in PO files
c-knof Oct 12, 2026
94ac7bc
Language: Document the modules maintained in PO files
c-knof Oct 12, 2026
e181d7e
Language: Do not depend on directory order in a plugin uninstall test
c-knof Oct 12, 2026
512eca5
Language: Inject the installation root into the `RepositoryProvider` …
c-knof Oct 13, 2026
24d634d
Language: Log the installation warnings through the injected `lang` l…
c-knof Oct 13, 2026
46688a5
Language: Take the client data directory from `Directories` and the c…
c-knof Oct 13, 2026
d662b40
Poll, TermsOfService: Drop the return type of the language file direc…
c-knof Oct 13, 2026
64aa1aa
Language: Check for shipped PO modules in one place
c-knof Oct 13, 2026
5a8f4eb
Language: Merge into the shipped PO files regardless of the number of…
c-knof Oct 13, 2026
af3b85f
TermsOfService: Remove the tos module from the global language files
c-knof Oct 13, 2026
2d126e7
Poll: Remove the poll module from the global language files
c-knof Oct 13, 2026
8d97c3b
Refinery: Accept a `LanguageIdentifier` in the `Language` test doubles
c-knof Oct 14, 2026
f361643
Language: Accept a `LanguageIdentifier` in `txt()` and `ntxt()`
c-knof Oct 14, 2026
5b26e01
Language: Remove the unused scope handling from `ilObjLanguage`
c-knof Oct 14, 2026
73d7258
Exercise: Drop the fallback module argument of `txt()`
c-knof Oct 14, 2026
9700103
Survey: Drop the fallback module argument of `txt()`
c-knof Oct 14, 2026
0ad15d8
WebServices: Drop the fallback module argument of `txt()`
c-knof Oct 14, 2026
8bc63a4
OrgUnit: Drop the fallback module argument of `txt()`
c-knof Oct 14, 2026
5679d03
Forum: Drop the fallback module argument of `txt()`
c-knof Oct 14, 2026
aab87e1
Component: Serve the translations from PO files
c-knof Oct 13, 2026
87d59dd
Repository: Load the `cmps` module instead of passing it to `txt()`
c-knof Oct 14, 2026
bd2cd94
WebDAV: Load the `meta` module instead of passing it to `txt()`
c-knof Oct 14, 2026
77edf4e
Language: Replace `ntxt()` and the fallback module by `txt($a_topic, …
c-knof Oct 14, 2026
4e3e865
UI: Follow the new signature of `ilLanguage::txt()` in `LanguageMock`
c-knof Oct 14, 2026
8c77da1
Refinery: Follow the new signature of `Language::txt()` in the test d…
c-knof Oct 14, 2026
fbdfe6c
Language: Serve the translations from PO files
c-knof Oct 13, 2026
0a2e603
Language: Keep serving a module whose shipped `.po` cannot be compiled
c-knof Oct 14, 2026
1ce15ef
Language: Keep the remarks of the overlay in line with the imported file
c-knof Oct 14, 2026
4868099
Language: Fix the setup warning about the missing client data directory
c-knof Oct 14, 2026
86dd4d6
Language: Make `convert_module_to_po.php` write all files or none
c-knof Oct 14, 2026
713327b
Language: Update the documentation of modules maintained in PO files
c-knof Oct 14, 2026
58f2dce
Language: Recognise the "new variable" marker behind further `#`
c-knof Oct 15, 2026
8f02bd7
Language: Keep the notes of a language as translator comments
c-knof Oct 15, 2026
4d9c689
Language: Check the converted values like the build in `convert_modul…
c-knof Oct 15, 2026
a6e8342
Language: Refuse two directories that ship the same language files
c-knof Oct 20, 2026
b323bd8
Language: Assert the contributed modules of the component by their pr…
c-knof Oct 20, 2026
7adefe6
Language: Refuse a new entry whose identifier exists in another module
c-knof Oct 20, 2026
7d31cb1
Language: Check the shipped PO files in "check all languages"
c-knof Oct 20, 2026
783a870
Language: Name the languages with invalid files when an install or re…
c-knof Oct 20, 2026
beb81f4
Language: Serve migrated modules without CLIENT_DATA_DIR
c-knof Oct 16, 2026
05a7da4
Language: Never read shipped modules from the database
c-knof Oct 16, 2026
0fb19e6
Language: Build the shipped language files before installing languages
c-knof Oct 16, 2026
00a3eb8
Language: Document that shipped modules never fall back to the database
c-knof Oct 16, 2026
c70c51a
Language: Test that shipped modules are never read from the database
c-knof Oct 16, 2026
91d2392
Language: Never fall back to the database in the language administration
c-knof Oct 16, 2026
b2a3d81
Language: Prefer CLIENT_ID when resolving the client data directory
c-knof Oct 16, 2026
55d9374
Language: Forget the resolved client data directory with the served b…
c-knof Oct 16, 2026
8aed6cb
Language: Record the contributed modules in current.json
c-knof Oct 16, 2026
1f4b69f
Language: Test the language administration without the database fallback
c-knof Oct 16, 2026
bd78b1f
Language: Accept language files of only the header when checking all …
c-knof Oct 16, 2026
23c178f
Language: Check the content of a module before saving any of its changes
c-knof Oct 19, 2026
f3cfbf2
Language: Keep the build when the list of contributed modules is invalid
c-knof Oct 19, 2026
6009156
Language: Remember a missing client data directory until the served b…
c-knof Oct 19, 2026
b9e9da0
Language: Take over the local changes in lng_data only once
c-knof Oct 19, 2026
d55f5a2
Language: Test saving only readable modules and taking over local cha…
c-knof Oct 19, 2026
900a10a
Language: Report overlays of unshipped modules and unrecorded take-ov…
c-knof Oct 21, 2026
5e7861c
Language: Merge local changes into the PO files even if the global la…
c-knof Oct 22, 2026
904137b
Language: Fix the PHPStan findings in the PO file handling
c-knof Oct 22, 2026
970aa48
Language: Report invalid language files as a translated server-side e…
c-knof Oct 22, 2026
f5a0620
Language: Remove the scan of duplicate keys in the global language files
c-knof Oct 22, 2026
4bc860f
Language: Count the build warnings in Setup if the build is unchanged
c-knof Oct 22, 2026
511de18
Language: Dispatch an exact allowlist of commands in `ilObjLanguageEx…
c-knof Oct 22, 2026
4f66161
Language: Serve the migrated modules through a `TranslationRepository`
c-knof Oct 21, 2026
69012e9
Language: Hash all catalog classes for the compatibility of a former …
c-knof Oct 22, 2026
f97bf04
Language: Refuse imported entries whose identifier exists in another …
c-knof Oct 22, 2026
b836f7d
Language: Name the invalid language files when installing with the cu…
c-knof Oct 22, 2026
40e225f
Language: Skip entries of the customizing file whose identifier exist…
c-knof Oct 22, 2026
879560a
Language: Document the upgrade to translations in PO files
c-knof Oct 28, 2026
3f65aa2
Language: Require the PHP extension gettext as in the dependency PR
c-knof Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
/db_template_writer.php
/components/ILIAS/Database/sql/dbupdate_custom.php
/install_client.php
/lang/customizing/*.po
/lang/customizing/ilias_*.lang

# Directories
/public
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ private function mockUserLanguageGerman(): void
$ilDB->method('query')->willReturnCallback(function ($query): ilDBStatement {
$statement = $this->createMock(ilDBStatement::class);

if (str_contains($query, 'SELECT * FROM lng_modules')) {
if (str_contains($query, 'FROM lng_modules')) {
$statement->method('numRows')->willReturn(1);
$statement->method('fetchRow')->willReturn([
'lang_array' => serialize([
Expand Down
7 changes: 7 additions & 0 deletions components/ILIAS/Component/Component.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@

namespace ILIAS;

use ILIAS\Language\ComponentTranslation\LanguageFileDirectory;
use ILIAS\Language\ComponentTranslation\ComponentLanguageFileDirectory;

class Component implements Component\Component
{
public function init(
Expand Down Expand Up @@ -53,5 +56,9 @@ public function init(

$internal[Component\Resource\PublicAssetManager::class] = static fn() =>
new Component\Resource\PublicAssetManager();
$contribute[LanguageFileDirectory::class] = fn() => new ComponentLanguageFileDirectory(
$this,
'cmps'
);
}
}
228 changes: 228 additions & 0 deletions components/ILIAS/Component/lang/cmps.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
msgid ""
msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
"MIME-Version: 1.0\n"
"X-Domain: cmps\n"

msgid "cmps_activate"
msgstr ""

msgid "cmps_active"
msgstr ""

msgid "cmps_add_new_rank"
msgstr ""

msgid "cmps_available"
msgstr ""

msgid "cmps_available_version"
msgstr ""

msgid "cmps_basic_files"
msgstr ""

msgid "cmps_class_file"
msgstr ""

msgid "cmps_component"
msgstr ""

msgid "cmps_configure"
msgstr ""

msgid "cmps_current_db_version"
msgstr ""

msgid "cmps_current_version"
msgstr ""

msgid "cmps_database"
msgstr ""

msgid "cmps_db_update"
msgstr ""

msgid "cmps_deactivate"
msgstr ""

msgid "cmps_detailed_information"
msgstr ""

msgid "cmps_dir"
msgstr ""

msgid "cmps_disable_creation"
msgstr ""

msgid "cmps_enable_creation"
msgstr ""

msgid "cmps_file_version"
msgstr ""

msgid "cmps_group"
msgstr ""

msgid "cmps_id"
msgstr ""

msgid "cmps_ilias_max_version"
msgstr ""

msgid "cmps_ilias_min_version"
msgstr ""

msgid "cmps_inactive"
msgstr ""

msgid "cmps_install"
msgstr ""

msgid "cmps_is_active"
msgstr ""

msgid "cmps_is_installed"
msgstr ""

msgid "cmps_lang_files"
msgstr ""

msgid "cmps_lang_prefix"
msgstr ""

msgid "cmps_languages"
msgstr ""

msgid "cmps_main_dir"
msgstr ""

msgid "cmps_missing"
msgstr ""

msgid "cmps_module"
msgstr ""

msgid "cmps_must_installed"
msgstr ""

msgid "cmps_name"
msgstr ""

msgid "cmps_needs_matching_ilias_version"
msgstr ""

msgid "cmps_needs_newer_ilias_version"
msgstr ""

msgid "cmps_needs_newer_plugin_version"
msgstr ""

msgid "cmps_needs_update"
msgstr ""

msgid "cmps_needs_upgrade"
msgstr ""

msgid "cmps_no_db_update_file_available"
msgstr ""

msgid "cmps_no_language_file_available"
msgstr ""

msgid "cmps_plugin"
msgstr ""

msgid "cmps_plugin_activated"
msgstr ""

msgid "cmps_plugin_db_prefixes"
msgstr ""

msgid "cmps_plugin_deactivated"
msgstr ""

msgid "cmps_plugin_deinstalled"
msgstr ""

msgid "cmps_plugin_file"
msgstr ""

msgid "cmps_plugin_lang_prefixes"
msgstr ""

msgid "cmps_plugin_slot"
msgstr ""

msgid "cmps_plugin_uninstalled"
msgstr ""

msgid "cmps_plugin_updated"
msgstr ""

msgid "cmps_plugins"
msgstr ""

msgid "cmps_refresh"
msgstr ""

msgid "cmps_refresh_lng"
msgstr ""

msgid "cmps_rep_object"
msgstr ""

msgid "cmps_repository_object_types"
msgstr ""

msgid "cmps_responsible"
msgstr ""

msgid "cmps_responsible_mail"
msgstr ""

msgid "cmps_save_options"
msgstr ""

msgid "cmps_service"
msgstr ""

msgid "cmps_show_details"
msgstr ""

msgid "cmps_slots"
msgstr ""

msgid "cmps_status"
msgstr ""

msgid "cmps_supports_cli_setup"
msgstr ""

msgid "cmps_supports_export"
msgstr ""

msgid "cmps_supports_learning_progress"
msgstr ""

msgid "cmps_uninstall"
msgstr ""

msgid "cmps_uninstall_confirm"
msgstr ""

msgid "cmps_uninstall_inactive_confirm"
msgstr ""

msgid "cmps_update"
msgstr ""

msgid "cmps_version"
msgstr ""

msgid "database_is_uptodate"
msgstr ""

msgid "no_changes"
msgstr ""
Loading
Loading