Лучшая практика присвоения имен ключам в файлах ресурсов

StackOverflow https://stackoverflow.com/questions/621600

  •  05-07-2019
  •  | 
  •  

Вопрос

Есть ли у кого-нибудь какие-либо рекомендации по присвоению имен ключам в файлах ресурсов?Например, основываете ли вы название своего ключа на тексте, который необходимо локализовать, или на элементе управления, который использует этот текст?

Допустим, у вас есть кнопка редактирования на нескольких экранах (один для редактирования пользователя, другой для редактирования группы).Вы могли бы использовать следующие ключи:

  • Кнопка editUserButton.метка = Редактировать пользователя...
  • Кнопка редактирования группы.метка = Редактировать группу...

или

  • editUser= Редактировать пользователя...
  • editGroup= Группа редактирования...

или

  • пользователь.редактировать=Редактировать пользователя...
  • группа.редактировать=Редактировать группу...

Какую схему вы предпочитаете и почему?

Это было полезно?

Решение

Я добавляю к своим литералам префикс usecase или action classname.например:

PlaceOrder.invalidId=Invalid id for order {0}
PlaceOrder.success=Your order {0} was successful
PlaceOrder.fail.visa=Your visa was ...
PlaceOrder.fail.communications=We could not...
PlaceOrder.submit=Buy now

Login=Login
Login.fail=Your credentials did not...
Login.alread=You are already logged in

Таким образом, вы избежите столкновений:

EditStudent=Edit
EditClass=Edit
EditCourse=Edit Course

... а также можете проще найти то, что вам нужно.

Другой способ, которым я группируюсь, - это по сущности:

Person.id=#
Person.name=First name
Person.surname=Surname

Они могут отображаться в виде заголовков в таблицах с объектами.Это спасает вас в таких случаях, как этот:

Person.id=#
Class.id=#
Course.id=Course Id

Наконец, предоставляя контекст в ключах свойств, вы можете уберечься от ложных переводов.Например, у меня когда - то был:

no=no

который использовался в качестве заголовка таблицы id (#) в верхней левой ячейке, но наш французский переводчик сделал это для французского:

no=non

...он думал, что это было слово "нет" (отрицание "да").:)

И последнее (но не менее важное), добавление префикса classname поможет вам, когда вы захотите реорганизовать / переименовать классы и быстро обновить эти ключи свойств без необходимости просматривать шаблоны.

Другие советы

Мы основываем его на английской версии термина.Пример:EditUser Это было легко читаемо нашими разработчиками и может быть повторно использовано в нескольких местах, этот термин требуется во всем приложении.

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

Конечно, вы все равно должны стремиться быть последовательными в именовании материалов.Увеличение количества строк также увеличит затраты на перевод, если вы делаете это на коммерческой основе.

И не игнорируйте опасность омонимов.Предоставление контекста помогает предотвратить это.Не бойтесь делать название ресурса длиннее фактического английского термина, это может существенно помочь переводчикам.

+ 1 за ответ @cherouvim, но это всегда сводится к документации.

Документируйте каждое значение (используя любой механизм комментариев, поддерживаемый форматом файла источника ресурсов), включая тип данных каждого параметра, если строка поддается форматированию.Например, редактор VS для формата .resx предоставляет поле комментария, что делает это очень простым.

Итак, сообщение, подобное:

Не удалось запланировать задание {0} до {1}.

было бы задокументировано как что-то вроде:

Зарегистрированное сообщение об ошибке, {0}:название задания, {1} дата / время в формате ISO 8601.

Я думаю, что в первую очередь вам следует использовать какие-то XML-файлы для хранения такого рода данных.

Что - то вроде :

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xml>
    <button>
        <edit>
            <user>*** Редактировать пользователя*
</user>
            <group>Редактировать группу</group>
        </edit>
    </button>
</xml>**

А затем используйте класс "translate", чтобы получить (и установить / сохранить) текст.

Что - то вроде :

myTranslateClass.загрузить( 'translate.xml ' );
myTranslateClass.get( 'кнопка' , 'редактировать' , 'пользователь');

Это простой пример.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top