Tôi mới sử dụng Drupal và đang xây dựng một mô-đun tùy chỉnh để tìm hiểu cách thức hoạt động của tất cả.
Tôi đang xây dựng mô-đun của mình trong mô-đun/tùy chỉnh/my_module
. Tôi có một tệp ngôn ngữ tiếng Hà Lan trong mô-đun/tùy chỉnh/my_module/bản dịch/my_module-0.1.nl.po
.
Nếu tôi chỉ định nó như thế trong .info.yml
tập tin, nó hoạt động rất tốt:
tên: Mô-đun của tôi
Mô tả: Chỉ cần thử nghiệm
phiên bản: 0.1
gói: Tùy chỉnh
loại: mô-đun
core_version_requirement: ^8,8 || ^9
'dự án dịch giao diện': my_module
'mẫu máy chủ dịch giao diện: modules/custom/my_module/translations/%project-%version.%language.po
Nhưng, bây giờ của tôi .info.yml
tập tin sẽ buộc người dùng cài đặt mô-đun này trong mô-đun/tùy chỉnh/my_module
. Tôi không muốn điều đó. Tôi không quan tâm họ đặt nó ở đâu. Họ có thể đặt mô-đun này vào mô-đun/đóng góp/my_module
hoặc trang web/tất cả/mô-đun/my_module
vì tất cả những điều tôi quan tâm. Có thể ai đó sẽ đưa nó vào như một phần phụ thuộc được đóng gói và nó sẽ kết thúc bằng mô-đun/tùy chỉnh/some_module/mô-đun/my_module
. Điều đó không thành vấn đề và tôi không muốn mã hóa cứng đường dẫn mô-đun trong .info.yml
.
những gì tôi muốn là để có của tôi .info.yml
tệp chỉ định mẫu máy chủ bằng đường dẫn tương đối mô-đun (liên quan đến vị trí của mô-đun của tôi .info.yml
tập tin sống) như thế này:
'mẫu máy chủ dịch giao diện': translations/%project-%version.%lingu.po
# hoặc có thể là: ./translations/%project-%version.%lingu.po
Nhưng Drupal không thích điều này và việc kiểm tra các bản cập nhật cho bản dịch sẽ cho biết không thể tìm thấy tệp.
tôi biết về bản dịch: //
và công cộng://
trình bao bọc luồng, nhưng theo như tôi có thể nói thì điều này yêu cầu tệp dịch phải được lưu trữ ở nơi khác, được sao chép vào trang web/mặc định/tệp
thư mục (mà tôi có thể làm trong my_module_install()
nhưng không thuận tiện trong quá trình phát triển khi tôi liên tục thêm chuỗi) hoặc (một lần nữa) mã hóa cứng đường dẫn đến mô-đun.
Hiện tại tôi đã triển khai hook_locale_translation_projects_alter()
móc trong tôi my_module.module
file để đặt một đường dẫn tuyệt đối như thế này:
function my_module_locale_translation_projects_alter(&$projects) {
$projects['my_module']['info']['mẫu máy chủ dịch giao diện'] =
__DIR__ . '/translations/%project-%version.%language.po';
}
Điều này hoạt động, nhưng nó giống như một cách giải quyết khó chịu và không phải là cách Drupal dự định hoạt động.
Phương pháp thông thường để có được các đường dẫn tương đối mô-đun hoạt động cho các bản dịch là gì?
Chỉnh sửa: Theo đề xuất của @leymannx, thay vì sử dụng __DIR__
trong cái móc của tôi, tôi có thể sử dụng:
function my_module_locale_translation_projects_alter(&$projects) {
$projects['my_module']['info']['mẫu máy chủ dịch giao diện'] =
drupal_get_path('module', 'my_module') . '/translations/%project-%version.%language.po';
}
Điều này cảm thấy tốt hơn một chút, nhưng tôi vẫn cảm thấy điều này có thể thực hiện được mà không cần triển khai hook cho việc này.