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

В общем, методы перевода берут ключ & gt; отображение значения и используйте ключ, чтобы преобразовать это в значение. Теперь я узнаю два разных метода именования ваших ключей перевода, и в моей команде мы не пришли к единому мнению, что кажется лучшим методом.

Method 1: Используйте полные английские слова или предложения:

Name => Name
Please enter your email address => Please enter your email address

Method 2: Используйте ключевые слова, описывающие ситуацию:

NAME => Name
ENTER_EMAIL => Please enter your email address

Я лично предпочитаю метод № 1, потому что он прямо показывает смысл сообщения. Если перевода нет, вы можете вернуться к ключу, и это не вызовет никаких проблем. Однако этот метод является громоздким, когда перевод часто меняется, потому что все файлы должны быть обновлены. Также для более длинных текстов эти клавиши становятся очень большими. Это решается с помощью ключей, таких какENTER_EMAIL, но формулировка полностью вне контекста. Список абстрактных ключей перевода был бы огромен, вам нужны метаданные для всех ключей, объясняющих их использование, и коллизии могут происходить намного проще.

Есть ли лучшее из обоих миров или третий метод? Как вы используете ключи перевода в вашем приложении? В нашем случае это веб-приложение на основе php, но я думаю, что вышеупомянутая проблема достаточно общая, чтобы говорить о i18n в целом.

Ответы на вопрос(2)

Почему бы не использовать оба мира? Я использую метод № 1 для коротких строк и метод № 2 для длинных строк, которые являются полными предложениями. Я не боюсь смешивать оба в одном файле.

Например, в следующей строке текст может измениться, если в новой версии приложения изменяется пользовательский интерфейс:

"screen description" = "Tap the plus button to add a new item. Tap an item for more options or to edit its details.";

Так что здесь имеет смысл применить метод № 2. Однако для простых строк, как в следующем примере, метод # 1 более полезен:

"Preferences" = "Preferences";

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

Решение Вопроса

С этим вопросом также сталкиваются разработчики iOS / OSX. И для них есть дажестандартный инструмент под названиемgenstrings который предполагает способ 1. Но, конечно, разработчики Apple не должны использовать этот инструмент - я не так.

Хотя сеть безопасности, которую вы получаете с помощью метода 1, хороша (то есть вы можете отобразить ключ, если вы как-то забыли локализовать строку), у нее есть и обратная сторона, которая может привести к конфликту ключей. Иногда один и тот же фрагмент отображаемого текста необходимо локализовать двумя различными способами из-за грамматических правил или различий в контексте. Например, французский перевод «E-mail» будет "E-mail"; если это заголовок диалогового окна и «Посланник по электронной почте»; если это кнопка (во французском языке слово «E-mail» является только существительным и не может использоваться как глагол, в отличие от английского, где оно является и существительным, и глаголом). В методе 2 у вас могут быть ключи EMAIL_TITLE и EMAIL_BUTTON, чтобы решить эту проблему, и в качестве бонуса это даст подсказку переводчикам, которые помогут им правильно переводить.

Еще одно преимущество метода 2 заключается в том, что вы можете изменить текст на английском языке, не беспокоясь об обновлении ключа на английском языке и во всех ваших локализациях.

Поэтому я рекомендую способ 2!

Ваш ответ на вопрос