Tôi đang làm việc trên một ứng dụng web toàn cầu hóa trong ASP.NET MVC3. Dự án bao gồm các tập tin nguồn I18N và tôi thường truy cập vào các nguồn lực bên trong Razor tôi xem như ...Làm cách nào để bạn định dạng các chuỗi được bản địa hóa để có các từ đơn lẻ trong một câu là một liên kết?
@I18N.MyResourceString
Tôi có một tình huống khó khăn mà tôi đã không thể tìm ra một giải pháp thanh lịch để nêu ra. Tôi cần phải có thể bản địa hóa câu "Bấm vào đây để quyên góp." nơi từ 'ở đây' phải là một liên kết đến hệ thống quyên góp của chúng tôi.
Hầu hết các liên kết trong trang web là nội như vậy để tạo liên kết Tôi chỉ đơn giản là viết ...
@Html.ActionLink("Some link text", "MyAction", "MyController")
hiến này liên kết là bên ngoài. Những gì tôi có cho đến nay (mà không hoạt động) là ...
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\">" + I18N.Here + "</a>")
nơi văn bản I18N.ClickHereToDonate
tài nguyên là "Click {0} to donate."
.
gì tôi nhìn thấy trên màn hình là ...
Click <a href="http://paypal.com">here</a> to donate.
Hơn nữa, tôi cũng muốn nói thêm một 'danh hiệu' thuộc tính đến 'a' thẻ. Nó được thậm chí xấu xí khi tôi cố gắng mà ...
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>")
Cần phải có một cách tốt hơn để tạo thành chuỗi phức tạp với các thẻ nhúng mà không concatenating việc cùng nhau một cách hackish như vậy. Không chỉ nó không hoạt động (đánh dấu dự định đã được mã hóa) nhưng nó làm cho HTML bên trong một chuỗi chữ trong mẫu dao cạo của tôi mà làm cho tôi mất bất kỳ hỗ trợ IDE tuyệt vời/intergation/refactoring khả năng.
Cách đánh dấu có thể được đưa vào chuỗi được bản địa hóa?
CẬP NHẬT
Adam Tuliper đề cập đến phương pháp @Html.Raw
helper trong câu trả lời của mình vì vậy tôi thêm nó vào đánh dấu đã xấu xí của tôi ...
@Html.Raw(String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>"))
này ít nhất đã cho tôi một liên kết nhấp thể trong đánh dấu xuất.
Nhấp vào here để quyên góp.
Nó vẫn là một giải pháp ít thanh lịch hơn mặc dù vậy tôi vẫn đang tìm cách tốt hơn để làm điều này.
anh ấy cần chuỗi.format vì chuỗi ở trên chứa trình giữ chỗ. {0}, v.v. –
Đây là những gì tôi phải nghỉ đến bây giờ nhưng nó không phải là kết quả mong muốn. Doanh nghiệp chỉ muốn từ "ở đây" là một liên kết chứ không phải toàn bộ câu. Câu trả lời của bạn là chính xác những gì tôi đã làm cho các liên kết mục trình đơn của tôi mà tất cả là một từ hoặc chỉ một vài từ. –
Tôi đã chỉnh sửa ở trên để sử dụng @ Html.Raw - Adam đã sử dụng nó bên dưới. Sử dụng hai String.Formats sẽ cung cấp cho bạn kết quả mong muốn, mà không cần thay đổi chuỗi tài nguyên của bạn hoặc bất kỳ thứ gì khác. –