Điểm:2

Cách sử dụng đường dẫn mô-đun tương đối để dịch trong .info.yml

lá cờ id

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: //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.

leymannx avatar
lá cờ ne
Hãy thử `drupal_get_path('module', 'MYMODULE') . '/translations/%language.po'`.
rickdenhaan avatar
lá cờ id
@leymannx tôi có thể làm điều đó trong tệp yaml của mình không? Hay tôi vẫn cần triển khai hook để sử dụng chức năng đó?
leymannx avatar
lá cờ ne
Không, từ cái móc. Tôi không nghĩ rằng bạn có thể có đường dẫn tương đối của mô-đun trong tệp thông tin. Chỉ tương đối gốc web.
rickdenhaan avatar
lá cờ id
@leymannx hoạt động và cảm thấy tốt hơn so với sử dụng `__DIR__` nhưng chắc chắn có cách để thực hiện việc này từ tệp yaml mà không cần triển khai hook?
leymannx avatar
lá cờ ne
Tôi không nghĩ vậy. Có gì sai với cái móc?
rickdenhaan avatar
lá cờ id
Cái móc không cần thiết cho một thứ tầm thường như thế này.Nó cũng không được thực thi khi mô-đun chưa được cài đặt, vì vậy Drupal sẽ không đọc tên/mô tả mô-đun đã dịch cho danh sách mô-đun trên trang Mở rộng trong giao diện người dùng quản trị nơi tôi có thể chọn và cài đặt mô-đun đó. (Tôi thực sự chưa kiểm tra, nhưng tôi *cho rằng* nó sẽ đọc tên/mô tả đã dịch từ tệp ngôn ngữ được chỉ định trong .info.yml cho trang đó...)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.