Trong Symfony/Twig, tôi có thể sử dụng thẻ bằng cách sử dụng tỷ lệ phần trăm trong khối dịch của tôi. Ví dụ:Sử dụng trình giữ chỗ trong bản dịch bằng cách sử dụng thẻ
Hello {{nickname}}
sẽ trở thành
{% trans %}Hello %nickname%{% endtrans %}
này hoạt động như mong đợi. Mảng có phần giữ chỗ mà tôi chuyển đến Twig, được tự động ánh xạ tới% placeHolder%. Không có thêm công việc liên quan. Vì vậy, đây làm việc với mảng PHP của tôi từ bộ điều khiển con người:
Array('nickname' => 'rolandow')
Khi tôi muốn sử dụng các nickname bên trong khối dịch, tất cả tôi phải làm là bao quanh nó với tỷ lệ%. Thật không may, điều này dường như không hoạt động khi tôi chuyển nó đến trans
.
Bây giờ tôi muốn dịch toàn bộ khối văn bản, sử dụng thẻ. Tôi không thể tìm ra cách tôi có thể sử dụng các thẻ trong bản dịch của mình. Vì vậy, cành lá của tôi sẽ giống như thế này:
{{ say.hello|trans }}
Và bản dịch của tôi đoạn mã
<trans-unit id="1">
<source>say.hello</source>
<target>Hello %nickName%, how are you doing today? lots-of-text-here</target>
</trans-unit>
tôi nhận nó làm việc bằng cách sử dụng này trong mẫu của tôi, nhưng nó cảm thấy như làm việc hai lần. Bây giờ tôi cần đặt mảng giữ chỗ vào hàm trans một lần nữa. Ví dụ:
{{ say.hello|trans('%nickName%' : nickName) }}
Nếu tôi muốn sử dụng thẻ khác được trao cho cành trong bộ điều khiển của tôi, tôi cần phải vượt qua chúng để người dịch là tốt. Tôi không thể vượt qua mảng hoàn chỉnh bằng cách nào đó?
Bạn có thực sự xây dựng một mảng như '$ tags = array ('% nickname%' => 'luke') 'trong bộ điều khiển của bạn? Nếu bạn chỉ có thể thực hiện '{{say.hello | trans (tags)}}' – Luke
Hoặc khai báo biến 'tags' bằng từ khóa' set'. – eagleoneraptor
@Luke, không có mảng nào giống như mảng ('nickname' => 'luke'). Đó thực sự là quan điểm của tôi, nó cảm thấy như mã hóa dư thừa để chạy qua mảng và thêm tỷ lệ phần trăm. Tôi đã hy vọng có một cách tốt hơn để làm điều này. Tôi nhận ra bây giờ mà làm điều này trong bộ điều khiển là một nơi tốt hơn nhiều so với trong mẫu mặc dù. – rolandow