2016-12-02 3 views
0

Я читал, как переводить веб-сайты, используя локальные или глобальные файлы resx. Хотя это отлично подходит для кнопок и небольших фрагментов текста в целом, когда мне грозит перевод больших фрагментов текста, мне кажется странным, что мне приходится хранить длинные строки в файлах resx и располагать текст небольшими клавишами заставляет меня не перечитывать то, что я только что написал.Есть ли способ перевести веб-сайты, отличные от файлов resx?

Например:

<p> <%$ Resources:MyResources, Welcome %> <%$ Resources:MyResources, to %> <%$ Resources:MyResources, my %> <%$ Resources:MyResources, wonderful %> <%$ Resources:MyResources, Website %> , <%$ Resources:MyResources, Where %> <%$ Resources:MyResources, you %> <%$ Resources:MyResources, can %> <%$ Resources:MyResources, Find %> <%$ Resources:MyResources, amazing %> <%$ Resources:MyResources, information %> <%$ Resources:MyResources, about %> <%$ Resources:MyResources, this %><%$ Resources:MyResources, and %><%$ Resources:MyResources, that %> <p> 

Или:

<%$ Resources:MyResources, WelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThat %> 

есть лучший способ справиться с многоязычной поддержкой? Спасибо,

(забыл добавить, что я использую VS2013, и это для сайта C# WebForms с ASPX и ASCX)

+1

Проверьте этот проект [https://github.com/turquoiseowl/i18n](https://github.com/turquoiseowl/i18n). С его помощью вы можете создавать более читаемые шаблоны. –

+0

Спасибо @ ВиталийСмоляков! Я смотрел этот проект и, наверняка, было бы лучше использовать [[[Welcome to My Wonderful Website, где вы можете найти удивительную информацию об этом и том]]] вместо WelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThat как ключ.Есть ли у вас опыт использования? На первый взгляд сложно это настроить! – malarres

+1

Просто установите, добавьте способ настройки, переведите некоторую страницу для тестирования и запустите :). Не может быть очевидной проблемы, если на вашем пути есть 2 или 3 части символов, например zzz.com/api/call. Ярлык url ​​считает, что API-интерфейс неизвестен и удаляет его из URL-адреса. Запрос приходит на zzz.com/call. В последней версии/api/был добавлен фильтр для исключения из обработки. –

ответ

1

Вы можете оказать непосредственно из Resources, вы не использовать синтаксис <%$ , Вы можете использовать <%= (или вариант автоматического кодирования <%: вместо):

В вашем случае, я бы один Resources.resx файла в моем проекте, с записью для приветствия Blurb с коротким ключом:

Key: WelcomeMessage 
Value (in `Resources.resx`): "Welcome to my website where..." 
Value (in `Resources.de-DE.resx`): "Willkommen auf meiner Website..." 

И в моих .aspx файлов с помощью <%:

<p><%: Resources.WelcomeMessage %> 

Или с помощью <%= если вы хотите, чтобы сделать сырой HTML:

<p><%= Resources.WelcomeMessage %> 

Razor синтаксис:

<p>@Resources.WelcomeMessage</p> 

Или для читаемости:

<p>@(Resources.WelcomeMessage)</p> 

Resources является static class, что существует и автоматически получает правильное значение ресурса на основании текущего значения культуры Thread (так что убедитесь, что у вас есть код, который правильно изменяет культуру Thread), возвращая ваше резервное значение, если перевод не применяется.

Вы можете просмотреть исходное значение в Visual Studio, наведя указатель мыши на каждое значение свойства, поскольку комментарии XML, созданные конструктором Resx, включают в себя первые 100 символов из строки ресурса.

+0

Спасибо за ваш ответ. Однако: (с обозначением <%: нотация и с обозначением <% =) я получаю эту ошибку: Сообщение об ошибке компилятора: CS0234: Тип или имя пространства имен «WelcomeMessage» не существует в пространстве имен «Ресурсы» (вам не хватает сборки ссылка?) – malarres

+0

И с синтаксисом Razor я просто вижу @ Resources.WelcomeMessage, а не значение – malarres

+0

@malarres Синтаксис Razor работает только в файлах '.cshtml'. – Dai

0

Наконец, я использовал одно из предложений Дай (сокращая все до примера «WelcomeMessage»), но не смог заставить его работать, используя свои обозначения. В любом случае, я сделал, чтобы создать пару фрагментов кода, чтобы облегчить задачу ввода. Но наверняка в следующий раз я собираюсь попробовать проект, на который указал Виталий! Благодаря

Смежные вопросы