Проблема при объединении строки и значения ресурса - PullRequest
3 голосов
/ 14 марта 2011

У меня странное поведение на моей странице .aspx.Я интернационализирую некоторые страницы, но так как я хочу сохранить в своем ресурсе только сущности или объекты-значения, я хочу иметь ключ-значение, например:

(pt-br)
    CITY - Cidade
    STATE - Estado
    ...

Но когда я перечисляю сущности, я хочупоставить «:» в конце.Например:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>:"></asp:Label>

Но, если я добавлю «:» после ресурса в текстовом свойстве, на странице отобразится только «:».

Мое простое решение ставится после всех определенийярлык, но я думаю, что это тоже неправильно:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>"></asp:Label>:

Предложения?

Ответы [ 3 ]

5 голосов
/ 13 июня 2014

Была та же самая проблема и после некоторого поиска преобразовала это

<asp:Label ID="label" runat="server" Text="<%$ Resources: Resources, color %>" />:

в это:

<asp:Label ID="label" runat="server">
    <%= Resources.Resources.color + ":"%>
</asp:Label>
1 голос
/ 15 марта 2011

Вы правильно назвали это: конкатенация.Проблема в том, что конкатенация является одним из наиболее серьезных (как и в случае высокой степени серьезности) дефектов i18n.Вместо того, чтобы делать то, что вы делаете, я бы посоветовал вам помещать целые строки (или в худшем случае сценариев с заполнителями) в файлы ресурсов, даже если вам приходится дублировать ресурсы (эти дублированные ресурсы могут переводиться по-разному в зависимости от контекста).).

Позвольте привести пример: когда я был в команде L10n, у нас была консоль с несколькими страницами, каждая страница имела заголовок «Что-то Политика », т.е.«Брандмауэр Политика », «Антивирус и антишпионское ПО Политика ».Кто-то подумал, что это хорошая идея - сохранить некоторые ценные кусочки и просто соединить заголовок вместе:

String title = Resources.getString("Firewall") + "<b>" + Resources.getString("Policy") + "</b>";

Единственная проблема, с которой мы столкнулись, это правильный польский перевод, звучащий как " Polityka zapory ogniowej"то есть «Политика» на первом месте.На самом деле мы перевели это как «Zapora ogniowa Polityka », что далеко не соответствует правильному переводу (обратите внимание, что перевод «Firewall» должен быть родительным падежом ... Переводчик понятия не имел, что он переводит, поэтомуперевод. И это не могло быть исправлено, так как мы не смогли переупорядочить предложение.

Исправление требовало экстернализации всей строки, так что на самом деле все благие намерения оригинального разработчика пошли в ад.

Если вы все еще читаете это, пожалуйста, имейте в виду, что всем двоеточиям во французском языке должен предшествовать пробел (это только их правило). Повторное использование одних и тех же переводов для построения нескольких предложений может запретить это...

0 голосов
/ 14 марта 2011

Выражения (<%$) - это заданный синтаксис, так что это все или ничего, если вы хотите использовать выражение там. Вы можете сделать то, что вы предложили, или установить значения из кода в качестве альтернативы.

Однако, я думаю, ваш персонаж должен быть в вашем файле ресурсов. Все ли языки будут использовать один и тот же символ? Будет ли это работать для языков с написанием справа налево?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...