Как обозначить ресурсы как не переводить? - PullRequest
1 голос
/ 06 марта 2009

Я работаю над локализацией программного обеспечения Java, и мои проекты имеют как файлы .properties, так и ресурсы XML. В настоящее время мы используем комментарии, чтобы дать указание переводчикам не переводить определенные строки, но проблема с комментариями заключается в том, что они не читаются компьютером.

Единственное решение, которое я могу придумать, - это поставить перед каждым ключом «не переводить» что-то вроде _DNT_ и обучить наши инструменты перевода игнорировать эти записи. У кого-нибудь есть идея получше?

Ответы [ 5 ]

4 голосов
/ 06 марта 2009

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

0 голосов
/ 29 апреля 2009

Если вы решите использовать комментарии «не переводить» в своих файлах свойств, я бы порекомендовал вам следовать соглашению Eclipse . В этом нет ничего особенного, но жизнь станет проще, если мы все будем использовать одну и ту же магическую нить!

(Насколько мне известно, Eclipse пока не поддерживает комментарии DO-NOT-TRANSLATE, но Tennera Ant-Gettext имеет реализацию вышеуказанной схемы, которая используется при преобразовании из пакетов ресурсов. получить текстовые PO-файлы.)

0 голосов
/ 06 марта 2009

Самое простое решение - не помещать строки «не переводить» (DNT) в файлы ресурсов.

.properties файлы не предлагают много возможностей для обработки метаданных, и, поскольку вам не нужны данные во время выполнения, их присутствие в .properties файлах будет побочный эффект, а не то, что желательно. Также рассмотрим частичные DNT, в которых есть что-то, что не может быть переведено, содержится в переводимой строке (например, название бренда или URI).

"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr"

Насколько мне известно, даже такие стандарты, как XLIFF , не учитывают DNT, и вам придется управлять ими с помощью пользовательских файлов метаданных, файлов терминологии и / или комментарии (например, элемент note в XLIFF).

0 голосов
/ 06 марта 2009

Как axelclk опубликовал в своей ссылке ... затмение предоставить

// $ NON-NLS-1 $

Заявление для уведомления проекта о том, что первая строка в этой строке не должна переводиться. Все остальные строки вы можете найти, позвонив Source-> Externalize Strings

Внешние строки включают все языки, которые вы хотите поддерживать.

Файл, который включает переводы, похожие на: PluginPage.Error1 = text1 PluginPage.Error2 = text2

Класс, который читает перевод

private static final String BUNDLE_NAME = "com.plugin.name"; //$NON-NLS-1$

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    private PluginMessages() {
    }

    public static String getString(String key) { 
        // TODO Auto-generated method stub
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }

И вы можете назвать это как:

String msg = PluginMessages.getString("PluginPage.Error2"); //$NON-NLS-1$

EDIT:

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

Но это не работает во время выполнения.

0 голосов
/ 06 марта 2009

Eclipse JDT также использует комментарии для предотвращения перевода определенных строк:

Как написать плагины Eclipse для международного рынка

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

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