/ / Як позначити ресурси як не перекладати? - java, локалізація, інтернаціоналізація

Як позначити ресурси як do-not-translate? - java, локалізація, інтернаціоналізація

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

Єдине рішення, про яке я можу придумати - це префікс кожного ключа "не перекладати" чимось подібним _DNT_ і навчити наші засоби перекладу ігнорувати ці записи. Хтось там має кращу ідею?

Відповіді:

4 для відповіді № 1

Чи можете ви розбити файли на такі, які будутьперекладені або не переведені, а потім надішліть лише той, що підлягає перекладу? (Не знайте структури так, щоб не знати, коли відповідати, чи це практично ...)


0 для відповіді № 2

JDT Eclipse також використовує коментарі для запобігання перекладу певних рядків:

Як написати плагіни Eclipse для міжнародного ринку

Я думаю, що ваш інструмент перекладу повинен працювати аналогічно?


0 для відповіді № 3

Найпростіше рішення - не розміщувати рядки "не перекладати" (DNT) у файли ресурсів.

.властивості файли не пропонують багато способів обробки метаданих, а оскільки вам не потрібні дані під час виконання, її наявність у .властивості файли будуть скоріше побічним ефектом, ніжщось бажане. Враховуйте також, часткові DNT, де у вас є щось, що неможливо перекласти, міститься в рядку, що перекладається (наприклад, фірмова назва або URI).

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

Наскільки мені відомо, подобаються навіть стандарти XLIFF не приймайте до уваги DNT, і вам доведеться керувати ними за допомогою спеціальних файлів метаданих, термінологічні файли та / або коментарі (такі як Примітка елемент у XLIFF).


0 для відповіді № 4

Як axelclk розмістив у своєму посиланні ... затемнення забезпечити

// $ NON-NLS-1 $

Заява про сповіщення проекту про те, що перший рядок у цьому рядку не повинен бути перекладений. Усі інші рядки ви можете знайти, зателефонувавши Джерело-> Екстерналізація рядків

Зовнішні рядки містять усі мови, які ви хочете підтримувати.

Файл, що включає переклади, схожі на: 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:

Коли рядок екстерналізовано і ви хочете використовувативихідний рядок, ви можете видалити рядок зовнішньої зовнішності з усіх файлів властивостей, не маючи за замовчуванням. Коли пакет не може знайти файл повідомлення, який відповідає локальній мові, використовується типова умова.

Але це не працює під час виконання.


0 для відповіді № 5

Якщо ви все-таки вирішите використовувати коментарі "не перекладати" у своїх файлах властивостей, я рекомендую вам дотримуватися цього Конвенція про затемнення. Нічого особливого, але життя буде простішим, якщо всі ми використовуємо одну і ту ж магічну струну!

(Eclipse насправді не підтримує коментарів DO NOT NOT TRANSLATE, наскільки я знаю, але Теннера Ant-Gettext має реалізацію вищезазначеної схеми, яка використовується при перетворенні з пакетів ресурсів у файли Gettext PO.)