diff --git a/app/assets/javascripts/i18n/cs.js b/app/assets/javascripts/i18n/cs.js index 5b9cf1a52..c4218efca 100644 --- a/app/assets/javascripts/i18n/cs.js +++ b/app/assets/javascripts/i18n/cs.js @@ -803,13 +803,14 @@ I18n.translations["cs"] = I18n.extend((I18n.translations["cs"] || {}), { "helpers": { "page_entries_info": { "more_pages": { - "display_entries": "Displaying %{entry_name} %{first} - %{last} of %{total} in total" + "display_entries": "Zobrazuji %{entry_name} %{first} - %{last} z %{total} celkových" }, "one_page": { "display_entries": { - "one": "Displaying %{count} %{entry_name}", - "other": "Displaying all %{count} %{entry_name}", - "zero": "No %{entry_name} found" + "few": "Zobrazuji %{count} %{entry_name}", + "one": "Zobrazuji %{count} %{entry_name}", + "other": "Zobrazuji %{count} %{entry_name}", + "zero": "Žádná položka nenalezena" } } }, @@ -1619,10 +1620,10 @@ I18n.translations["cs"] = I18n.extend((I18n.translations["cs"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", - "next": "Next ›", - "previous": "‹ Prev", + "first": "« První", + "last": "Poslední »", + "next": "Další ›", + "previous": "‹ Předchozí", "truncate": "…" } }, diff --git a/app/assets/javascripts/i18n/da.js b/app/assets/javascripts/i18n/da.js index fde833a25..adde9be86 100644 --- a/app/assets/javascripts/i18n/da.js +++ b/app/assets/javascripts/i18n/da.js @@ -798,12 +798,12 @@ I18n.translations["da"] = I18n.extend((I18n.translations["da"] || {}), { "helpers": { "page_entries_info": { "more_pages": { - "display_entries": "Displaying %{entry_name} %{first} - %{last} of %{total} in total" + "display_entries": "Viser %{entry_name} %{first} - %{last} af %{total}" }, "one_page": { "display_entries": { - "one": "Displaying %{count} %{entry_name}", - "other": "Displaying all %{count} %{entry_name}", + "one": "Viser %{count} %{entry_name}", + "other": "Viser alle %{count} %{entry_name}", "zero": "No %{entry_name} found" } } @@ -1367,75 +1367,75 @@ I18n.translations["da"] = I18n.extend((I18n.translations["da"] || {}), { } }, "ransack": { - "all": "all", - "and": "and", - "any": "any", - "asc": "ascending", - "attribute": "attribute", - "combinator": "combinator", - "condition": "condition", - "desc": "descending", - "or": "or", + "all": "alle", + "and": "og", + "any": "anhver", + "asc": "opstigende", + "attribute": "attribut", + "combinator": "kombinering", + "condition": "betingelse", + "desc": "faldende", + "or": "eller", "predicate": "predicate", "predicates": { - "blank": "is blank", - "cont": "contains", - "cont_all": "contains all", - "cont_any": "contains any", - "does_not_match": "doesn't match", - "does_not_match_all": "doesn't match all", - "does_not_match_any": "doesn't match any", - "end": "ends with", - "end_all": "ends with all", - "end_any": "ends with any", - "eq": "equals", - "eq_all": "equals all", - "eq_any": "equals any", - "false": "is false", - "gt": "greater than", - "gt_all": "greater than all", - "gt_any": "greater than any", - "gteq": "greater than or equal to", - "gteq_all": "greater than or equal to all", - "gteq_any": "greater than or equal to any", - "in": "in", - "in_all": "in all", - "in_any": "in any", - "lt": "less than", - "lt_all": "less than all", - "lt_any": "less than any", - "lteq": "less than or equal to", - "lteq_all": "less than or equal to all", - "lteq_any": "less than or equal to any", - "matches": "matches", - "matches_all": "matches all", - "matches_any": "matches any", - "not_cont": "doesn't contain", - "not_cont_all": "doesn't contain all", - "not_cont_any": "doesn't contain any", - "not_end": "doesn't end with", - "not_end_all": "doesn't end with all", - "not_end_any": "doesn't end with any", - "not_eq": "not equal to", - "not_eq_all": "not equal to all", - "not_eq_any": "not equal to any", - "not_in": "not in", - "not_in_all": "not in all", - "not_in_any": "not in any", - "not_null": "is not null", - "not_start": "doesn't start with", - "not_start_all": "doesn't start with all", - "not_start_any": "doesn't start with any", - "null": "is null", - "present": "is present", - "start": "starts with", - "start_all": "starts with all", - "start_any": "starts with any", - "true": "is true" - }, - "search": "search", - "sort": "sort", - "value": "value" + "blank": "er blank", + "cont": "indeholder", + "cont_all": "indeholder alle", + "cont_any": "indeholder nogen", + "does_not_match": "matcher ikke", + "does_not_match_all": "matcher ikke alle", + "does_not_match_any": "matcher ikke nogen", + "end": "slutter med", + "end_all": "slutter med alle", + "end_any": "slutter med nogen", + "eq": "lig med", + "eq_all": "lig med alle", + "eq_any": "lig med enhver", + "false": "er falsk", + "gt": "større end", + "gt_all": "større end alle", + "gt_any": "større end nogen", + "gteq": "større end eller lig med", + "gteq_all": "større end eller lig med alle", + "gteq_any": "større end eller lig med nogen", + "in": "i", + "in_all": "i alle", + "in_any": "i nogen", + "lt": "mindre end", + "lt_all": "mindre end alle", + "lt_any": "mindre end nogen", + "lteq": "mindre end eller lig med", + "lteq_all": "mindre end eller lig med alle", + "lteq_any": "mindre end eller lig med nogen", + "matches": "matcher", + "matches_all": "matcher alle", + "matches_any": "matcher enhver", + "not_cont": "indeholder ikke", + "not_cont_all": "indeholder ikke alle", + "not_cont_any": "indeholder ikke nogen", + "not_end": "slutter ikke med", + "not_end_all": "slutter ikke med alle", + "not_end_any": "slutter ikke med nogen", + "not_eq": "ikke lig med", + "not_eq_all": "ikke lig med alle", + "not_eq_any": "ikke lig med nogen", + "not_in": "ikke i", + "not_in_all": "ikke i alle", + "not_in_any": "ikke i nogen", + "not_null": "er ikke nul", + "not_start": "starter ikke med", + "not_start_all": "starter ikke med alle", + "not_start_any": "starter ikke med nogen", + "null": "er nul", + "present": "er til stede", + "start": "starter med", + "start_all": "starter med alle", + "start_any": "starter med nogen", + "true": "er sand" + }, + "search": "søg", + "sort": "sorter", + "value": "værdi" }, "search": { "index": { @@ -1607,10 +1607,10 @@ I18n.translations["da"] = I18n.extend((I18n.translations["da"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", - "next": "Next ›", - "previous": "‹ Prev", + "first": "« Første", + "last": "Sidste »", + "next": "Næste ›", + "previous": "‹ Forrige", "truncate": "…" } }, diff --git a/app/assets/javascripts/i18n/fr.js b/app/assets/javascripts/i18n/fr.js index 908b74f74..f05d869de 100644 --- a/app/assets/javascripts/i18n/fr.js +++ b/app/assets/javascripts/i18n/fr.js @@ -265,35 +265,35 @@ I18n.translations["fr"] = I18n.extend((I18n.translations["fr"] || {}), { } }, "apipie": { - "api_documentation": "API documentation", - "comments_powered_by_disqus": "comments powered by %{disqus}", + "api_documentation": "documentation API", + "comments_powered_by_disqus": "section commentaires par %{disqus}", "description": "Description", - "enable_javascript_html": "Please enable JavaScript to view the %{comments_href}.", + "enable_javascript_html": "Activez JavaScript SVP pour afficher la %{comments_href}.", "error_code": "Code", "error_description": "Description", "error_metadata": "Metadata", - "errors": "Errors", - "examples": "Examples", - "follow_instructions_href": "further instructions", - "follow_instructions_html": "Follow %{href} on how to describe your controllers.", - "goto_homepage_href": "%{app_name} API documentation homepage", - "goto_homepage_html": "Try going to %{href}", - "header_name": "Header name", + "errors": "Erreurs", + "examples": "Exemples", + "follow_instructions_href": "instructions supplémentaires", + "follow_instructions_html": "Suivez ces %{href} sur la façon dont décrire vos controlleurs.", + "goto_homepage_href": "la page d'accueil %{app_name} API documentation homepage", + "goto_homepage_html": "Essayez de regarder %{href}", + "header_name": "Nom du header", "headers": "Headers", "metadata": "Metadata", - "method_not_found_html": "Method %{method} not found for resource %{resource}.", - "nil_allowed": "nil allowed", - "no_docs_found": "No documentation found", - "no_docs_found_descr": "We have not found any documentation for your API.", + "method_not_found_html": "Méthode %{method} non trouvée pour la ressource %{resource}.", + "nil_allowed": "nil autorisé", + "no_docs_found": "Aucune documentation trouvée", + "no_docs_found_descr": "Aucune documentation pour cette API", "oops": "Oops!!", - "optional": "optional", - "param_name": "Param name", - "params": "Params", - "required": "required", - "resource": "Resource", - "resource_not_found_html": "Resource %{resource} not found.", - "resources": "Resources", - "supported_formats": "Supported Formats" + "optional": "optionel", + "param_name": "Nom du paramètre", + "params": "Paramètres", + "required": "requis", + "resource": "Ressource", + "resource_not_found_html": "Ressource %{resource} not found.", + "resources": "Ressources", + "supported_formats": "Formats supportés" }, "application": { "require_no_user": { diff --git a/app/assets/javascripts/i18n/hi.js b/app/assets/javascripts/i18n/hi.js index 6a8835e2c..8b0b45c7a 100644 --- a/app/assets/javascripts/i18n/hi.js +++ b/app/assets/javascripts/i18n/hi.js @@ -1607,8 +1607,8 @@ I18n.translations["hi"] = I18n.extend((I18n.translations["hi"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", + "first": "« पहला", + "last": "आखरी »", "next": "अगला ›", "previous": "‹ पिछला", "truncate": "…" diff --git a/app/assets/javascripts/i18n/hu.js b/app/assets/javascripts/i18n/hu.js index 85c8dbfea..1a80f4d71 100644 --- a/app/assets/javascripts/i18n/hu.js +++ b/app/assets/javascripts/i18n/hu.js @@ -801,7 +801,7 @@ I18n.translations["hu"] = I18n.extend((I18n.translations["hu"] || {}), { "display_entries": "%{entry_name} %{first} - %{last} megjelenítve (összesen %{total})" }, "one_page": { - "display_entries": "Mind a %{count} %{entry_name} megjelenítve" + "display_entries": "Mind a(z) %{count} %{entry_name} megjelenítve" } }, "select": { @@ -1603,8 +1603,8 @@ I18n.translations["hu"] = I18n.extend((I18n.translations["hu"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", + "first": "« Első", + "last": "Utolsó »", "next": "Következő ›", "previous": "‹ Előző", "truncate": "…" diff --git a/app/assets/javascripts/i18n/it.js b/app/assets/javascripts/i18n/it.js index 000d89737..a10f5f8c6 100644 --- a/app/assets/javascripts/i18n/it.js +++ b/app/assets/javascripts/i18n/it.js @@ -265,35 +265,35 @@ I18n.translations["it"] = I18n.extend((I18n.translations["it"] || {}), { } }, "apipie": { - "api_documentation": "API documentation", - "comments_powered_by_disqus": "comments powered by %{disqus}", - "description": "Description", - "enable_javascript_html": "Please enable JavaScript to view the %{comments_href}.", - "error_code": "Code", - "error_description": "Description", + "api_documentation": "Documentazione API", + "comments_powered_by_disqus": "commenti forniti da %{disqus}", + "description": "Descrizione", + "enable_javascript_html": "Abilita i JavaScript per vedere %{comments_href}.", + "error_code": "Codice", + "error_description": "Descrizione", "error_metadata": "Metadata", - "errors": "Errors", - "examples": "Examples", - "follow_instructions_href": "further instructions", - "follow_instructions_html": "Follow %{href} on how to describe your controllers.", - "goto_homepage_href": "%{app_name} API documentation homepage", - "goto_homepage_html": "Try going to %{href}", - "header_name": "Header name", - "headers": "Headers", + "errors": "Errori", + "examples": "Esempi", + "follow_instructions_href": "ulteriori istruzioni", + "follow_instructions_html": "Leggi su %{href} come descrivere i tuoi controller.", + "goto_homepage_href": "%{app_name} Homepage della documentazione API", + "goto_homepage_html": "Prova ad andare su %{href}", + "header_name": "Nome Header", + "headers": "Header", "metadata": "Metadata", - "method_not_found_html": "Method %{method} not found for resource %{resource}.", - "nil_allowed": "nil allowed", - "no_docs_found": "No documentation found", - "no_docs_found_descr": "We have not found any documentation for your API.", - "oops": "Oops!!", - "optional": "optional", - "param_name": "Param name", - "params": "Params", - "required": "required", - "resource": "Resource", - "resource_not_found_html": "Resource %{resource} not found.", - "resources": "Resources", - "supported_formats": "Supported Formats" + "method_not_found_html": "Metodo %{method} non trovato per la risorsa %{resource}.", + "nil_allowed": "consentito nil", + "no_docs_found": "Nessuna documentazione trovata", + "no_docs_found_descr": "Non abbiamo trovato nessuna documentazione per la tua API.", + "oops": "Ops!!", + "optional": "opzionale", + "param_name": "Nome parametro", + "params": "Parametri", + "required": "richiesto", + "resource": "Risorsa", + "resource_not_found_html": "Risorsa %{resource} non trovata.", + "resources": "Risorse", + "supported_formats": "Formati supportati" }, "application": { "require_no_user": { @@ -1375,75 +1375,75 @@ I18n.translations["it"] = I18n.extend((I18n.translations["it"] || {}), { } }, "ransack": { - "all": "all", - "and": "and", - "any": "any", - "asc": "ascending", - "attribute": "attribute", - "combinator": "combinator", - "condition": "condition", - "desc": "descending", - "or": "or", - "predicate": "predicate", + "all": "tutti", + "and": "e", + "any": "qualsiasi", + "asc": "crescente", + "attribute": "attributo", + "combinator": "combinatore", + "condition": "condizione", + "desc": "decrescente", + "or": "o", + "predicate": "predicato", "predicates": { - "blank": "is blank", - "cont": "contains", - "cont_all": "contains all", - "cont_any": "contains any", - "does_not_match": "doesn't match", - "does_not_match_all": "doesn't match all", - "does_not_match_any": "doesn't match any", - "end": "ends with", - "end_all": "ends with all", - "end_any": "ends with any", - "eq": "equals", - "eq_all": "equals all", - "eq_any": "equals any", - "false": "is false", - "gt": "greater than", - "gt_all": "greater than all", - "gt_any": "greater than any", - "gteq": "greater than or equal to", - "gteq_all": "greater than or equal to all", - "gteq_any": "greater than or equal to any", + "blank": "è vuoto", + "cont": "contiene", + "cont_all": "contiene tutti", + "cont_any": "contiene almeno un", + "does_not_match": "non corrisponde", + "does_not_match_all": "non corrisponde con nessuno", + "does_not_match_any": "non corrisponde ad uno qualsiasi", + "end": "finisce con", + "end_all": "finisce con tutti", + "end_any": "finisce con almeno un", + "eq": "uguale a", + "eq_all": "uguale ad ognuno", + "eq_any": "uguale ad almeno un", + "false": "è falso", + "gt": "maggiore di", + "gt_all": "maggiore di tutti", + "gt_any": "maggiore di almeno un", + "gteq": "maggiore o uguale a", + "gteq_all": "maggiore o uguale a tutti", + "gteq_any": "maggiore o uguale ad almeno un", "in": "in", - "in_all": "in all", - "in_any": "in any", - "lt": "less than", - "lt_all": "less than all", - "lt_any": "less than any", - "lteq": "less than or equal to", - "lteq_all": "less than or equal to all", - "lteq_any": "less than or equal to any", - "matches": "matches", - "matches_all": "matches all", - "matches_any": "matches any", - "not_cont": "doesn't contain", - "not_cont_all": "doesn't contain all", - "not_cont_any": "doesn't contain any", - "not_end": "doesn't end with", - "not_end_all": "doesn't end with all", - "not_end_any": "doesn't end with any", - "not_eq": "not equal to", - "not_eq_all": "not equal to all", - "not_eq_any": "not equal to any", - "not_in": "not in", - "not_in_all": "not in all", - "not_in_any": "not in any", - "not_null": "is not null", - "not_start": "doesn't start with", - "not_start_all": "doesn't start with all", - "not_start_any": "doesn't start with any", - "null": "is null", - "present": "is present", - "start": "starts with", - "start_all": "starts with all", - "start_any": "starts with any", - "true": "is true" - }, - "search": "search", - "sort": "sort", - "value": "value" + "in_all": "in tutti", + "in_any": "in almeno un", + "lt": "minore di", + "lt_all": "minore di tutti", + "lt_any": "minore di almeno un", + "lteq": "minore o uguale a", + "lteq_all": "minore o uguale a tutti", + "lteq_any": "minore o uguale ad almeno un", + "matches": "combacia con", + "matches_all": "combacia con tutti", + "matches_any": "combacia con almeno un", + "not_cont": "non contiene", + "not_cont_all": "non contiene nessuno", + "not_cont_any": "non contiene un qualsiasi", + "not_end": "non finisce con", + "not_end_all": "non finisce con nessuno", + "not_end_any": "non finisce con uno qualsiasi", + "not_eq": "diverso da", + "not_eq_all": "diverso da tutti", + "not_eq_any": "diverso da uno qualsiasi", + "not_in": "non in", + "not_in_all": "non in tutti", + "not_in_any": "non in almeno un", + "not_null": "non è nullo", + "not_start": "non inizia con", + "not_start_all": "non inizia con nessuno", + "not_start_any": "non inizia con uno qualsiasi", + "null": "è nullo", + "present": "è presente", + "start": "inizia con", + "start_all": "inizia con tutti", + "start_any": "inizia con almeno un", + "true": "è vero" + }, + "search": "cerca", + "sort": "ordinamento", + "value": "valore" }, "search": { "index": { diff --git a/app/assets/javascripts/i18n/ja.js b/app/assets/javascripts/i18n/ja.js index bb6620442..e4bf5777f 100644 --- a/app/assets/javascripts/i18n/ja.js +++ b/app/assets/javascripts/i18n/ja.js @@ -265,35 +265,35 @@ I18n.translations["ja"] = I18n.extend((I18n.translations["ja"] || {}), { } }, "apipie": { - "api_documentation": "API documentation", - "comments_powered_by_disqus": "comments powered by %{disqus}", - "description": "Description", - "enable_javascript_html": "Please enable JavaScript to view the %{comments_href}.", - "error_code": "Code", - "error_description": "Description", - "error_metadata": "Metadata", - "errors": "Errors", - "examples": "Examples", - "follow_instructions_href": "further instructions", - "follow_instructions_html": "Follow %{href} on how to describe your controllers.", - "goto_homepage_href": "%{app_name} API documentation homepage", - "goto_homepage_html": "Try going to %{href}", - "header_name": "Header name", - "headers": "Headers", - "metadata": "Metadata", - "method_not_found_html": "Method %{method} not found for resource %{resource}.", - "nil_allowed": "nil allowed", - "no_docs_found": "No documentation found", - "no_docs_found_descr": "We have not found any documentation for your API.", - "oops": "Oops!!", - "optional": "optional", - "param_name": "Param name", - "params": "Params", - "required": "required", - "resource": "Resource", - "resource_not_found_html": "Resource %{resource} not found.", - "resources": "Resources", - "supported_formats": "Supported Formats" + "api_documentation": "APIドキュメント", + "comments_powered_by_disqus": "%{disqus}によるコメント", + "description": "記述", + "enable_javascript_html": "%{comments_href}のJavaScriptをオンにしてください。", + "error_code": "エラーコード", + "error_description": "エラー説明", + "error_metadata": "エラーメタデータ", + "errors": "エラー", + "examples": "例", + "follow_instructions_href": "具体的な説明", + "follow_instructions_html": "コントローラーをどう説明するのか%{href}を参考にしてください。", + "goto_homepage_href": "%{app_name}APIドキュメントのホームページ", + "goto_homepage_html": "%{href}へ移ります。", + "header_name": "ヘッダー名", + "headers": "ヘッダー", + "metadata": "メタデータ", + "method_not_found_html": "リソース%{resource}のためのメソッド%{method}が見つかりませんでした。 .", + "nil_allowed": "nil可", + "no_docs_found": "ドキュメントが見つかりませんでした。", + "no_docs_found_descr": "あなたのAPIにあう資料が見つかりませんでした。", + "oops": "おっと!", + "optional": "任意", + "param_name": "パラメーター名", + "params": "パラメーター", + "required": "必須", + "resource": "リソース", + "resource_not_found_html": "リソース%{resource}が見つかりませんでした。", + "resources": "リソース", + "supported_formats": "サポートフォーマット" }, "application": { "require_no_user": { @@ -1413,75 +1413,75 @@ I18n.translations["ja"] = I18n.extend((I18n.translations["ja"] || {}), { } }, "ransack": { - "all": "all", - "and": "and", - "any": "any", - "asc": "ascending", - "attribute": "attribute", - "combinator": "combinator", - "condition": "condition", - "desc": "descending", - "or": "or", - "predicate": "predicate", + "all": "全て", + "and": "と", + "any": "いずれか", + "asc": "昇順", + "attribute": "属性", + "combinator": "組み合わせ", + "condition": "状態", + "desc": "降順", + "or": "あるいは", + "predicate": "は以下である", "predicates": { - "blank": "is blank", - "cont": "contains", - "cont_all": "contains all", - "cont_any": "contains any", - "does_not_match": "doesn't match", - "does_not_match_all": "doesn't match all", - "does_not_match_any": "doesn't match any", - "end": "ends with", - "end_all": "ends with all", - "end_any": "ends with any", - "eq": "equals", - "eq_all": "equals all", - "eq_any": "equals any", - "false": "is false", - "gt": "greater than", - "gt_all": "greater than all", - "gt_any": "greater than any", - "gteq": "greater than or equal to", - "gteq_all": "greater than or equal to all", - "gteq_any": "greater than or equal to any", - "in": "in", - "in_all": "in all", - "in_any": "in any", - "lt": "less than", - "lt_all": "less than all", - "lt_any": "less than any", - "lteq": "less than or equal to", - "lteq_all": "less than or equal to all", - "lteq_any": "less than or equal to any", - "matches": "matches", - "matches_all": "matches all", - "matches_any": "matches any", - "not_cont": "doesn't contain", - "not_cont_all": "doesn't contain all", - "not_cont_any": "doesn't contain any", - "not_end": "doesn't end with", - "not_end_all": "doesn't end with all", - "not_end_any": "doesn't end with any", - "not_eq": "not equal to", - "not_eq_all": "not equal to all", - "not_eq_any": "not equal to any", - "not_in": "not in", - "not_in_all": "not in all", - "not_in_any": "not in any", - "not_null": "is not null", - "not_start": "doesn't start with", - "not_start_all": "doesn't start with all", - "not_start_any": "doesn't start with any", - "null": "is null", - "present": "is present", - "start": "starts with", - "start_all": "starts with all", - "start_any": "starts with any", - "true": "is true" - }, - "search": "search", - "sort": "sort", - "value": "value" + "blank": "は空である", + "cont": "は以下を含む", + "cont_all": "は以下の全てを含む", + "cont_any": "はいずれかを含む", + "does_not_match": "は以下と合致していない", + "does_not_match_all": "は以下の全てに合致していない", + "does_not_match_any": "は以下のいずれかに合致していない", + "end": "は以下で終わる", + "end_all": "は以下の全てで終わる", + "end_any": "は以下のいずれかで終わる", + "eq": "は以下と等しい", + "eq_all": "は以下の全てに等しい", + "eq_any": "は以下のいずれかに等しい", + "false": "偽", + "gt": "は以下より大きい", + "gt_all": "は以下の全てより大きい", + "gt_any": "は以下のいずれかより大きい", + "gteq": "は以下より大きいか等しい", + "gteq_all": "は以下の全てより大きいか等しい", + "gteq_any": "は以下のいずれかより大きいか等しい", + "in": "は以下の範囲内である", + "in_all": "は以下の全ての範囲内である", + "in_any": "は以下のいずれかの範囲内である", + "lt": "は以下よりも小さい", + "lt_all": "は以下の全てよりも小さい", + "lt_any": "は以下のいずれかより小さい", + "lteq": "は以下より小さいか等しい", + "lteq_all": "は以下の全てより小さいか等しい", + "lteq_any": "は以下のいずれかより小さいか等しい", + "matches": "は以下と合致している", + "matches_all": "は以下の全てと合致している", + "matches_any": "は以下のいずれかと合致している", + "not_cont": "は含まない", + "not_cont_all": "は以下の全てを含まない", + "not_cont_any": "は以下のいずれかを含まない", + "not_end": "は以下のどれでも終わらない", + "not_end_all": "は以下の全てで終わらない", + "not_end_any": "は以下のいずれかで終わらない", + "not_eq": "は以下と等しくない", + "not_eq_all": "は以下の全てと等しくない", + "not_eq_any": "は以下のいずれかに等しくない", + "not_in": "は以下の範囲内でない", + "not_in_all": "は以下の全ての範囲内", + "not_in_any": "は以下のいずれかの範囲内でない", + "not_null": "は無効ではない", + "not_start": "は以下で始まらない", + "not_start_all": "は以下の全てで始まらない", + "not_start_any": "は以下のいずれかで始まらない", + "null": "無効", + "present": "は存在する", + "start": "は以下で始まる", + "start_all": "は以下の全てで始まる", + "start_any": "は以下のどれかで始まる", + "true": "真" + }, + "search": "検索", + "sort": "分類", + "value": "値" }, "search": { "index": { diff --git a/app/assets/javascripts/i18n/lt.js b/app/assets/javascripts/i18n/lt.js index d73a36c7c..e6b969f5e 100644 --- a/app/assets/javascripts/i18n/lt.js +++ b/app/assets/javascripts/i18n/lt.js @@ -799,13 +799,14 @@ I18n.translations["lt"] = I18n.extend((I18n.translations["lt"] || {}), { "helpers": { "page_entries_info": { "more_pages": { - "display_entries": "Displaying %{entry_name} %{first} - %{last} of %{total} in total" + "display_entries": "Rodomi %{entry_name} %{first} - %{last}%{total}" }, "one_page": { "display_entries": { - "one": "Displaying %{count} %{entry_name}", - "other": "Displaying all %{count} %{entry_name}", - "zero": "No %{entry_name} found" + "few": "Rodomi visi %{count} %{entry_name}", + "one": "Rodomas %{count} %{entry_name}", + "other": "Rodomi visi %{count} %{entry_name}", + "zero": "%{entry_name} nerastas" } } }, diff --git a/app/assets/javascripts/i18n/lv.js b/app/assets/javascripts/i18n/lv.js index dabeb5824..3abcda71b 100644 --- a/app/assets/javascripts/i18n/lv.js +++ b/app/assets/javascripts/i18n/lv.js @@ -798,7 +798,7 @@ I18n.translations["lv"] = I18n.extend((I18n.translations["lv"] || {}), { "helpers": { "page_entries_info": { "more_pages": { - "display_entries": "Parāda %{entry_name} %{first} - %{last} no %{total} kopumā" + "display_entries": "Rāda %{entry_name} %{first} - %{last} no %{total}" }, "one_page": { "display_entries": { @@ -1607,8 +1607,8 @@ I18n.translations["lv"] = I18n.extend((I18n.translations["lv"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", + "first": "« Pirmā", + "last": "Pēdējā »", "next": "Nākošais ›", "previous": "‹ Iepriekšējais", "truncate": "…" diff --git a/app/assets/javascripts/i18n/mn.js b/app/assets/javascripts/i18n/mn.js new file mode 100644 index 000000000..19e2d9503 --- /dev/null +++ b/app/assets/javascripts/i18n/mn.js @@ -0,0 +1,1664 @@ +I18n.translations || (I18n.translations = {}); +I18n.translations["mn"] = I18n.extend((I18n.translations["mn"] || {}), { + "actions": { + "cancel": "Цуцлах", + "next": "Дараагийнх ", + "save": "Хадгалах", + "send": "Илгээх" + }, + "active_admin": { + "access_denied": { + "message": "You are not authorized to perform this action." + }, + "any": "Any", + "batch_actions": { + "action_label": "%{title} Selected", + "button_label": "Batch Actions", + "default_confirmation": "Are you sure you want to do this?", + "delete_confirmation": "Are you sure you want to delete these %{plural_model}? You won't be able to undo this.", + "labels": { + "destroy": "Delete" + }, + "link": "Create one", + "selection_toggle_explanation": "(Toggle Selection)", + "succesfully_destroyed": { + "one": "Successfully destroyed 1 %{model}", + "other": "Successfully destroyed %{count} %{plural_model}" + } + }, + "blank_slate": { + "content": "There are no %{resource_name} yet.", + "link": "Create one" + }, + "cancel": "Cancel", + "clear_filters": "Clear Filters", + "comments": { + "add": "Add Comment", + "author": "Author", + "author_missing": "Anonymous", + "author_type": "Author Type", + "body": "Body", + "created_at": "Created", + "delete": "Delete Comment", + "delete_confirmation": "Are you sure you want to delete these comment?", + "errors": { + "empty_text": "Comment wasn't saved, text was empty." + }, + "no_comments_yet": "No comments yet.", + "resource": "Resource", + "resource_type": "Resource Type", + "title": "Comment", + "title_content": "Comments (%{count})" + }, + "create_model": "New %{model}", + "dashboard": "Dashboard", + "dashboard_welcome": { + "call_to_action": "To add dashboard sections, checkout 'app/admin/dashboards.rb'", + "welcome": "Welcome to Active Admin. This is the default dashboard page." + }, + "delete": "Delete", + "delete_confirmation": "Are you sure you want to delete this?", + "delete_model": "Delete %{model}", + "details": "%{model} Details", + "devise": { + "change_password": { + "submit": "Change my password", + "title": "Change your password" + }, + "email": { + "title": "Email" + }, + "links": { + "forgot_your_password": "Forgot your password?", + "resend_confirmation_instructions": "Resend confirmation instructions", + "resend_unlock_instructions": "Resend unlock instructions", + "sign_in": "Sign in", + "sign_in_with_omniauth_provider": "Sign in with %{provider}", + "sign_up": "Sign up" + }, + "login": { + "remember_me": "Remember me", + "submit": "Login", + "title": "Login" + }, + "password": { + "title": "Password" + }, + "resend_confirmation_instructions": { + "submit": "Resend confirmation instructions", + "title": "Resend confirmation instructions" + }, + "reset_password": { + "submit": "Reset My Password", + "title": "Forgot your password?" + }, + "sign_up": { + "submit": "Sign up", + "title": "Sign up" + }, + "subdomain": { + "title": "Subdomain" + }, + "unlock": { + "submit": "Resend unlock instructions", + "title": "Resend unlock instructions" + }, + "username": { + "title": "Username" + } + }, + "download": "Download:", + "dropdown_actions": { + "button_label": "Actions" + }, + "edit": "Edit", + "edit_model": "Edit %{model}", + "empty": "Empty", + "equal_to": "Equal To", + "filter": "Filter", + "filters": { + "buttons": { + "clear": "Clear Filters", + "filter": "Filter" + }, + "predicates": { + "contains": "Contains", + "ends_with": "Ends with", + "equals": "Equals", + "greater_than": "Greater than", + "less_than": "Less than", + "starts_with": "Starts with" + } + }, + "greater_than": "Greater Than", + "has_many_delete": "Delete", + "has_many_new": "Add New %{model}", + "has_many_remove": "Remove", + "index_list": { + "block": "List", + "blog": "Blog", + "grid": "Grid", + "table": "Table" + }, + "less_than": "Less Than", + "logout": "Logout", + "main_content": "Please implement %{model}#main_content to display content.", + "new_model": "New %{model}", + "next": "Next", + "pagination": { + "empty": "No %{model} found", + "entry": { + "one": "entry", + "other": "entries" + }, + "multiple": "Displaying %{model} %{from} - %{to} of %{total} in total", + "multiple_without_total": "Displaying %{model} %{from} - %{to}", + "one": "Displaying 1 %{model}", + "one_page": "Displaying all %{n} %{model}" + }, + "powered_by": "Powered by %{active_admin} %{version}", + "previous": "Previous", + "search_field": "Search %{field}", + "search_status": { + "current_filters": "Current filters:", + "headline": "Scope:", + "no_current_filters": "None" + }, + "sidebars": { + "filters": "Filters", + "search_status": "Search Status" + }, + "status_tag": { + "no": "No", + "yes": "Yes" + }, + "unsupported_browser": { + "headline": "Please note that ActiveAdmin no longer supports Internet Explorer versions 8 or less.", + "recommendation": "We recommend upgrading to the latest Internet Explorer, Google Chrome, or Firefox.", + "turn_off_compatibility_view": "If you are using IE 9 or later, make sure you turn off \"Compatibility View\"." + }, + "update_model": "Edit %{model}", + "view": "View" + }, + "activerecord": { + "attributes": { + "poi": { + "address": "Хаяг", + "address_city": "Хот", + "address_housenumber": "Гэрийн хаяг", + "address_postcode": "Шуудангийн хаяг", + "address_street": "Гудамж", + "name": "Нэр", + "note": "Тэмдэглэл", + "phone": "Утасны дугаар", + "type": "Төрөл", + "website": "Вэбсайт" + }, + "user": { + "first_name": "Given name", + "last_name": "Last name", + "privacy_policy": "Privacy policy", + "terms": "Terms" + } + }, + "errors": { + "full_messages": { + "format": "%{attribute} %{message}" + }, + "messages": { + "accepted": "must be accepted", + "blank": "can't be blank", + "confirmation": "doesn't match confirmation", + "empty": "can't be empty", + "equal_to": "must be equal to %{count}", + "even": "must be even", + "exclusion": "is reserved", + "greater_than": "must be greater than %{count}", + "greater_than_or_equal_to": "must be greater than or equal to %{count}", + "inclusion": "is not included in the list", + "invalid": "is invalid", + "less_than": "must be less than %{count}", + "less_than_or_equal_to": "must be less than or equal to %{count}", + "not_a_number": "is not a number", + "not_equal_to": "must not be equal to %{count}", + "odd": "must be odd", + "record_invalid": "Validation failed: %{errors}", + "restrict_dependent_destroy": { + "many": "Cannot delete record because dependent %{record} exist", + "one": "Cannot delete record because a dependent %{record} exists" + }, + "taken": "has already been taken", + "too_long": "is too long (maximum is %{count} characters)", + "too_short": "is too short (minimum is %{count} characters)", + "wrong_length": "is the wrong length (should be %{count} characters)" + }, + "models": { + "user": { + "attributes": { + "email": { + "blank": "can't be blank if password is given" + }, + "privacy_policy": { + "accepted": "must be accepted" + }, + "terms": { + "accepted": "must be accepted" + } + } + }, + "user_session": { + "email": "Email address", + "password": "Password", + "remember_me": "Stay logged in" + } + }, + "template": { + "body": "There were problems with the following fields:", + "header": { + "one": "1 error prohibited this %{model} from being saved", + "other": "%{count} errors prohibited this %{model} from being saved" + } + } + }, + "models": { + "user": "User" + } + }, + "apipie": { + "api_documentation": "API documentation", + "comments_powered_by_disqus": "comments powered by %{disqus}", + "description": "Description", + "enable_javascript_html": "Please enable JavaScript to view the %{comments_href}.", + "error_code": "Code", + "error_description": "Description", + "error_metadata": "Metadata", + "errors": "Errors", + "examples": "Examples", + "follow_instructions_href": "further instructions", + "follow_instructions_html": "Follow %{href} on how to describe your controllers.", + "goto_homepage_href": "%{app_name} API documentation homepage", + "goto_homepage_html": "Try going to %{href}", + "header_name": "Header name", + "headers": "Headers", + "metadata": "Metadata", + "method_not_found_html": "Method %{method} not found for resource %{resource}.", + "nil_allowed": "nil allowed", + "no_docs_found": "No documentation found", + "no_docs_found_descr": "We have not found any documentation for your API.", + "oops": "Oops!!", + "optional": "optional", + "param_name": "Param name", + "params": "Params", + "required": "required", + "resource": "Resource", + "resource_not_found_html": "Resource %{resource} not found.", + "resources": "Resources", + "supported_formats": "Supported Formats" + }, + "application": { + "require_no_user": { + "notice": "Та нэвтэрсэн байна..." + }, + "require_user": { + "notice": "Та энэ хуудсыг харахын тулд заавал нэвтэрсэн байх ёстой." + } + }, + "breadcrumbs": { + "node": { + "create": "Шинэ газар нэмэх ", + "edit": "Газрыг засварлах" + }, + "root": "Тэргэнцэртэй иргэд зорчих газрын зураглал" + }, + "common": { + "close": "Ойрхон", + "skip": "Алгасах" + }, + "community_support_form": { + "new": { + "form": { + "describe": "Англи эсвэл Герман хэлээр бичнэ үү.", + "flash_after_submit": "Бидэнтэй холбогдсонд баярлалаа. Бид таньтай удахгүй эргэн холбогдох болно. ", + "header_text_html": "Эхлээд та асуултынхаа хариултыг Түгээмэл Асуулт Хариулт хэсгээс хайна уу. Хэрвээ таны асуудлыг шийдэх шийдэл олдоогүй бол, та дараах асуултанд хариулна уу. ", + "note": "Wheelmap бол ашгийн бус байгууллагын нээлттэй эх үүсвэртэй төсөл бөгөөд аппликэйшн хөгжүүлэгчдэд хязгаарлагдмал нөөцтэй болно. ", + "questions": { + "a": "Та юу хийсэн бэ?", + "b": "Та юу болно хэмээн хүлээж байсан бэ?", + "c": "Үүний оронд юу болсон бэ?" + }, + "submit_button": "Хүргүүлэх ", + "title": "Асуудлыг мэдэгдэх " + } + } + }, + "date": { + "abbr_day_names": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "abbr_month_names": [ + "", + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "day_names": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "formats": { + "default": "%Y-%m-%d", + "long": "%B %d, %Y", + "short": "%b %d" + }, + "month_names": [ + "", + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "order": [ + "year", + "month", + "day" + ] + }, + "datetime": { + "distance_in_words": { + "about_x_hours": { + "one": "about 1 hour", + "other": "about %{count} hours" + }, + "about_x_months": { + "one": "about 1 month", + "other": "about %{count} months" + }, + "about_x_years": { + "one": "about 1 year", + "other": "about %{count} years" + }, + "almost_x_years": { + "one": "almost 1 year", + "other": "almost %{count} years" + }, + "half_a_minute": "half a minute", + "less_than_x_minutes": { + "one": "less than a minute", + "other": "less than %{count} minutes" + }, + "less_than_x_seconds": { + "one": "less than 1 second", + "other": "less than %{count} seconds" + }, + "over_x_years": { + "one": "over 1 year", + "other": "over %{count} years" + }, + "x_days": { + "one": "1 day", + "other": "%{count} days" + }, + "x_minutes": { + "one": "1 minute", + "other": "%{count} minutes" + }, + "x_months": { + "one": "1 month", + "other": "%{count} months" + }, + "x_seconds": { + "one": "1 second", + "other": "%{count} seconds" + } + }, + "prompts": { + "day": "Day", + "hour": "Hour", + "minute": "Minute", + "month": "Month", + "second": "Seconds", + "year": "Year" + } + }, + "devise": { + "confirmations": { + "confirmed": "Таны цахим хаяг амжилттай баталгаажлаа. ", + "link": "Та баталгаажуулах зааварчилгааг хүлээж аваагүй юу?", + "send_instructions": "Таны цахим хаягийг баталгуужуулах холбоос бүхий имэйл -ийг та хэдэн хормын дотор хүлээж авах болно.", + "send_paranoid_instructions": "Хэрвээ танд хэрэглэгчийн бүртгэл байгаа бол, таны хэрэглэгчийн бүртгэлийг хэрхэн баталгаажуулах зааварчилгаа бүхий имэйл -ийг хэдэн хормын дотор хүлээж авах болно. " + }, + "destroy": { + "confirm": "Та итгэлтэй байн уу?", + "headline": "Хэрэглэгчийн бүртгэлийг устгах ", + "link": "Яг одоо устгах" + }, + "edit": { + "form": { + "labels": { + "current_password": "Одоо ашиглагдаж буй нууц үг (Энэ нь таны өөрчлөлтийг баталгаажуулахад бидэнд хэрэгтэй)", + "email": "Цахим шуудан", + "password": "Нууц үг (Хэрвээ та үүнийг өөрчлөхийг хүсэхгүй байгаа бол хоосон орхино уу)", + "password_confirmation": "Нууц үгийг давтах " + }, + "submit": "Өөрчлөлтийг хадгалах " + }, + "headline": "Хэрэглэгчийн бүртгэлийг засварлах " + }, + "failure": { + "already_authenticated": "Та нэвтэрсэн байна.", + "inactive": "Таны хэрэглэгчийн бүртгэл хараахан идэвхжээгүй байна.", + "invalid": "Цахим хаяг эсвэл нууц үг хүчин төгөлдөр биш байна. ", + "invalid_token": "Хүчин төгөлдөр бус нэвтрэлт бүртгэгдсэн байна ", + "last_attempt": "You have one more attempt before your account will be locked.", + "locked": "Таны хэрэглэгчийн бүртгэл түгжигдсэн байна", + "not_found_in_database": "Invalid email or password.", + "timeout": "Таны оролдлого хэтэрсэн байна, үргэлжлүүлэхийн тулд нэвтрэн орно уу. ", + "unauthenticated": "Та үргэлжлүүлхийн өмнө нэвтрэх эсвэл бүртгүүлэх хэрэгтэй", + "unconfirmed": "Үргэлжлүүлэхийн өмнө та өөрийн хэрэглэгчийн бүртгэлээ баталгаажуулах шаардлагатай:." + }, + "mailer": { + "confirmation_instructions": { + "landing_page": "Таны цахим хаяг руу явуулсан холбоос дээр дарна уу. Хэрвээ та биднээс ямар нэгэн имэйл хүлээж аваагүй бол, та өөрийн spam хавтасыг эхлэн шалгана уу. Хэрвээ тэнд байхгүй бол нэвтрэх хуудас руу буцаж дахин нэвтрэх оролдлого хийнэ үү. ", + "subject": "Та хэрэглэгчийн бүртгэлээ идэвхжүүлэхийн тулд дахин нэг алхам хийнэ үү" + }, + "reset_password_instructions": { + "subject": "Нууц үгийг дахин шинэчилэх заавар " + }, + "unlock_instructions": { + "subject": "Заавруудыг чөлөөлөх " + } + }, + "mandatory": "*Шаардлагатай ", + "omniauth_callbacks": { + "failure": "Эрх үүсгэх үйл явц дараах төрлөөр %{kind} бүтэлгүйтлээ. Алдаа: %{reason}", + "permission_missing": "Та шаардлагатай зөвшөөрлүүдийг аваагүй байна.", + "success": "Та амжилттай нэвтэрлээ. %{kind}" + }, + "password_recovery": { + "form": { + "labels": { + "email": "Цахим шуудан" + }, + "submit": "Нууц үгийг шинэчилэх " + }, + "headline": "Та нууц үгээ мартсан уу?" + }, + "password_reset": { + "email": { + "comment": "Хэрвээ та нууц үгээ шинэчилэх хүсэлт илгээгээгүй бол, энэ имэйл -ийг хэрэгсэхгүй байж болно.
Дээрх холбоосоор нэвтрэн нууц үгээ шинэчилэх хүртэл таны одоогийн хэрэглэж байгаа нууц үг өөрчлөгдөхгүй.", + "headline": "Тавтай морил %{email}", + "link": "Миний нууц үгийг өөрчил ", + "text": "Бид таны нууц үгийг өөрчлөх хүсэлт хүлээж авсан. Хэрвээ та хүсэлт илгээсэн бол, холбоосоор нэвтэрнэ үү - үгүй бол үүнийг үл хэрэгсэнэ үү!" + }, + "form": { + "labels": { + "password": "Шинэ нууц үг", + "password_confirmation": "Нууц үгийг давтах " + }, + "submit": "Нууц үгийг шинэчилэх " + }, + "headline": "Нууц үгийг шинэчилэх " + }, + "passwords": { + "link": "Та нууц үгээ мартсан уу? ", + "no_token": "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.", + "send_instructions": "Та хэдхэн хормын дотор нууц үгээ шинэчилэх зааварчилгаа бүхий имэйл -ийг хүлээж авах болно. ", + "send_paranoid_instructions": "Хэрвээ та хэрэглэгчийн бүртгэлтэй бол, хэдхэн хормын дотор нууц үгээ шинэчилэх зааварчилгаа бүхий имэйл -ийг хүлээж авах болно. ", + "updated": "Таны нууц үг амжилттай өөрчлөгдлөө, одоо та нэвтэрч болно", + "updated_not_active": "Таны нууц үг амжилттай өөрчлөгдлөө" + }, + "registrations": { + "destroyed": "Баяртай, таны хэрэглэгчийн бүртгэл амжилттай цуцлагдлаа. Бид таньтай дахин уулзана гэдэгт найдаж байна. ", + "inactive_signed_up": "Таны бүртгэл амжилттай хийгдлээ, гэвч бид таныг нэвтрүүлж чадахгүй. Шалтгаан нь: %{reason}", + "link": "Бүртгүүлэх ", + "reasons": { + "inactive": "Идэвхгүй ", + "locked": "Түгжигдсэн ", + "unconfirmed": "Баталгаажуулаагүй" + }, + "signed_up": "Та амжилттай нэвтэрлээ. Баталгаажуулах имэйл илгээгдсэн байна.", + "signed_up_but_inactive": "You have signed up successfully. However, we could not sign you in because your account is not yet activated.", + "signed_up_but_locked": "You have signed up successfully. However, we could not sign you in because your account is locked.", + "signed_up_but_unconfirmed": "A message with a confirmation link has been sent to your email address. Please open the link to activate your account.", + "update_needs_confirmation": "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address.", + "updated": "Та хэрэглэгчийн бүртгэлээ амжилттай шинэчлэлээ. " + }, + "sessions": { + "inactive": "Таны хэрэглэгчийн бүртгэл хараахан идэвжээгүй байна", + "invalid": "Цахим шуудангийн хаяг эсвэл нууц үг хүчин төгөлдөр биш байна. ", + "invalid_token": "Хүчин төгөлдөр бус нэвтрэлт бүртгэгдсэн байна ", + "link": "Нэвтрэх ", + "locked": "Таны хэрэглэгчийн бүртгэл түгжигдсэн байна", + "new": { + "no_osm_account": "OpenStreetMap хэрэглэгчийн бүртгэл биш байна. ", + "osm_promo_text": "Wheelmap нь OpenStreetMap (OSM) -ийн geodata дээр суурилсан. OpenStreetMap' нь үнэгүй дэлхийн газарзүйн зураглал бөгөөд хүмүүсийн сайн дурын оролцоогоор бүтээгдсэн юм. Энэ нь Википедиа шиг ажилладаг гэсэн үг. Та OpenStreetMap -д хэрэглэгчийн бүртгэл үүсгэж нэвтрэн орсноор шинээр газар тэмдэглэх болон засварлах боломжтой болох юм. ", + "promo_text_thank_you": "Таны дэмжлэгт маш их баярлалаа!", + "sign_in_with": "Нэвтрэх %{kind}", + "sign_up_with_osm": "Бүртгүүлэх ", + "wheelmap_promo_text": "Та тэргэнцэрт хүртээмжтэй газруудын тухай мэдээлэлтэй болсноор тулгуур эрхтний хөгжлийн бэрхшээлтэй хүмүүст өдөр тутмын амьдралаа илүү сайнаар төлөвлөхөд нь туслах болно. Цаашлаад, энэ нь OpenStreetMap сайтыг илүү дэлгэрэнгүй мэдээллээр хангахад тус болох юм. " + }, + "signed_in": "Амжилттай нэвтэрлээ. ", + "signed_out": "Амжилттай гарлаа", + "timeout": "Таны оролдлого хэтэрсэн байна, үргэлжлүүлэхийн тулд нэвтрэн орно уу. ", + "unauthenticated": "Та үргэлжлүүлхийн өмнө нэвтрэх эсвэл бүртгүүлэх шаардлагатай", + "unconfirmed": "Та үргэлжлүүлхийн өмнө өөрийн хэрэглэгчийн бүртгэлийг баталгаажуулах хэрэгтэй" + }, + "sign_in": { + "form": { + "labels": { + "email": "Цахим шуудан", + "password": "Нууц үг", + "remember_me": "Нэвтэрсэн хэвээр үлдэх үү? " + }, + "submit": "Нэвтрэх" + }, + "headline": "Нэвтрэх" + }, + "sign_out": { + "headline": "Гарах" + }, + "sign_up": { + "email": { + "confirm_my_account": "Миний хэрэглэгчийн бүртгэлийг баталгаажуул ", + "please_confirm": "Та доорх холбоосоор нэвтэрч хэрэглэгчийн бүртгэлээ баталгаажуулна: ", + "welcome": "Тавтай морил %{email} !" + }, + "form": { + "labels": { + "email": "Цахим хаяг ", + "password": "Нууц үг", + "password_confirmation": "Нууц үгийг давтах ", + "wants_newsletter": "Тийм, Wheelmap дээр хийгдэж байгаа хөгжүүлэлтүүдийг хадгал - гэхдээ сард ганц удаа ба түүнээс ихгүй байна." + }, + "submit": "Бүртгүүлэх " + }, + "headline": "Бүртгүүлэх " + }, + "unlocks": { + "link": "Та түгжээг тайлах зааварчилгааг хүлээж аваагүй юу?", + "send_instructions": "Та өөрийн хэрэглэгчийн бүртгэлийн түгжээг тайлах зааварчилгаа бүхий и-мэйлийг хэдэн хормын дотор хүлээж авах болно.", + "send_paranoid_instructions": "Хэрвээ та хэрэглэгчийн бүртгэлтэй бол, та өөрийн хэрэглэгчийн бүртгэлийн түгжээг тайлах зааварчилгаа бүхий и-мэйлийг хэдэн хормын дотор хүлээж авах болно. ", + "unlocked": "Таны хэрэглэгчийн бүртгэлийн түгжээ амжилттай гарлаа. Та одоо нэвтэрсэн байна ." + } + }, + "errors": { + "dynamic_format": "%{message}", + "format": "%{attribute} %{message}", + "messages": { + "accepted": "Хүлээн зөвшөөрсөн байх ёстой", + "already_confirmed": "Баталгаажсан байна", + "blank": " Бөглөсөн байх ёстой ", + "carrierwave_download_error": "could not be downloaded", + "carrierwave_integrity_error": "is not of an allowed file type", + "carrierwave_processing_error": "failed to be processed", + "confirmation": "Өгөгдөл тохирсонгүй ", + "confirmation_period_expired": "needs to be confirmed within %{period}, please request a new one", + "empty": " Бөглөсөн байх ёстой ", + "equal_to": "Таарч байх ёстой %{count}", + "even": "Тоо байх ёстой ", + "exclusion": "Нөөцлөгдсөн ", + "expired": "Хугацаа дууссан байна, шинээр хүсэлтээ илгээнэ үү ", + "extension_black_list_error": "You are not allowed to upload %{extension} files, prohibited types: %{prohibited_types}", + "extension_white_list_error": "You are not allowed to upload %{extension} files, allowed types: %{allowed_types}", + "greater_than": "Их байх ёстой %{count}", + "greater_than_or_equal_to": "Тэнцүү эсвэл их байх ёстой %{count}", + "inclusion": "Хүчин төгөлдөр бус үнэлэмж байна", + "invalid": "Хүчин төгөлдөр бус байна", + "less_than": "Бага байх ёстой %{count}", + "less_than_or_equal_to": "Тэнцүү эсвэл бага байх ёстой %{count}", + "mime_types_processing_error": "Failed to process file with MIME::Types, maybe not valid content-type? Original Error: %{e}", + "mini_magick_processing_error": "Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: %{e}", + "not_a_number": "Тоон утга биш байна", + "not_an_integer": "Бүхэл тоо байх ёстой ", + "not_found": "Илэрцгүй байна", + "not_locked": "Түгжигдээгүй байна", + "not_saved": { + "one": "хадгалахыг хориглоно %{resource}:", + "other": "%{count} хадгалахыг хориглоно %{resource}:" + }, + "odd": "Сондгой тоо байх ёстой ", + "other_than": "must be other than %{count}", + "present": "must be blank", + "rmagick_processing_error": "Failed to manipulate with rmagick, maybe it is not an image? Original Error: %{e}", + "taken": "Өгөгдсөн байна ", + "too_long": "Энэ хэтэрхий урт байна (%{count} үүнээс хэтрүүлэхгүй байх)", + "too_short": "Энэ хэтэрхий богино байна (%{count} үүнээс багадуулахгүй байх)", + "wrong_length": "Уртын хэмжээ буруу байна (%{count} өгөгдөл байх хэрэгтэй)" + }, + "models": { + "node": { + "website": { + "invalid": "Вэбсайт хаяг хүчин төгөлдөр биш байна " + } + } + }, + "template": { + "body": "Дараах талбаруудад асуудал гарсан байна", + "header": { + "one": "1 адлаа нь %{model} хадгалахад саад болж байна", + "other": "%{count} алдаанууд нь %{model} үүнийг хадгалахад саад болж байна " + } + } + }, + "faq": { + "answers": { + "0": "Та өөрийн тэмдэглэсэн газраа өөрөө өөрчилөх боломжтой. Зөвхөн сонголтоо зөв хийж хадгална уу !", + "1": "Та хэрэглэгчийн эрхээр нэвтрэн орж өөрийн тэмтэглэсэн газар болон түүнтэй холбоотой бүх нарийвчилсан өөрчлөлтүүдийг хийх боломжтой. \"Засварлах\" гэсэн цэсийг сонгон нэмэлт мэдээлэл болон засварлах мэдээллээ оруулна уу.", + "2": "Та санал сэтгэгдлийн хэсэгт нэмэлт мэдээлэл (жишээ нь: \"Энэ газар зөөврийн налуу замтай\") оруулж болно. \"Засварлах\" болон \"Сэтгэгдэл нэмэх\" хэсгийг сонгоно уу. " + }, + "headline": "Энэ газартай холбоотой ямар нэгэн асуудал байна уу?", + "questions": { + "0": "Тэмдэгэгээ буруу байна. ", + "1": "Энэ газрын талаарх дэлгэрэнгүй мэдээлэл буруу эсвэл дутуу байна.", + "2": "Надад энэ газрын талаар дэлгэрэнгүй мэдээлэл байна. " + } + }, + "flash": { + "actions": { + "create": { + "notice": "%{resource_name} амжилттай үүсгэлээ" + }, + "destroy": { + "alert": "%{resource_name} арилгаж чадахгүй байна", + "notice": "%{resource_name} амжилттай устгагдлаа" + }, + "update": { + "notice": "%{resource_name} амжилттай шинэчлэгдлээ" + } + }, + "photos": { + "destroy": { + "notice": "Зураг амжилттай устгагдсан байна" + } + } + }, + "form": { + "show_fully_accessible_places": "Тэргэнцэрт хүртээмжтэй", + "show_limited_accessible_places": "Хэсэгчилсэн газрууд тэргэнцэрт хүртээмжтэй", + "show_places_without_status": "Таниулаагүй өгөгдөл байна ", + "show_unaccessible_places": "Тэргэнцэрт хүртээмжтэй бус " + }, + "formtastic": { + "hints": { + "email": "Бид таны хаягийг итгэлтэйгээр байршуулах хэрэгтэй байна. Бид тань руу ямар нэгэн вирус илгээхгүй гэдгийг амлаж байна ", + "lat": "Газарзүйн зураглал дээр байрлах тэмдэглэгчийг зөв байршил руу шилжүүлэх ", + "osm_username": "Та хараахан гишүүнээр элсээгүй байна уу? Та яг одоо OpenStreetMap бүртгэл үүсгэнэ үү", + "password": "(Хэрвээ та өөрчлөхийг хүсэхгүй байгаа бол энэхүү зайг хоосон үлдээнэ үү)", + "phone": "Жишээ нь: +49 30 12345678", + "website": "Жишээ нь: http://www.example.com" + }, + "labels": { + "category": "Ангилал:", + "centralkey": "Гол утга:", + "city": "Хот:", + "create": "Газар шинээр нээх ", + "email": "Цахим хаяг ", + "finish": "Дуусгах", + "housenumber": "Үгүй:", + "lat": "Өндөрийн хэмжээ", + "lon": "Уртын хэмжээ", + "name": "Нэр:", + "osm_password": "OpenStreetMap нууц үг", + "osm_username": "OpenStreetMap хэрэглэгчийн нэр ", + "password": "Нууц үг", + "password_confirmation": "Нууц үгийг давтах ", + "phone": "Харилцах утасны дугаар:", + "postcode": "Шуудангийн хайрцаг:", + "privacy_policy": "Би гэрээний хувийн мэдээлэл нууцлах 1 болон 2-р зүйлийг зөвшөөрч байна ", + "reset": "Дахин шинэчилэх ", + "save": "Хадгалах", + "street": "Гудамж: ", + "terms": "Би хэрэглэгчийн мөрдөх гэрээний нөхцлийг хүлээн зөвшөөрч байна", + "type": "Төрөл:", + "website": "Цахим хуудас:", + "wheelchair": "Тэргэнцэрт хүртээмжтэй юу?", + "wheelchair_description": "Хүртээмжийн талаарх сэтгэгдэл:", + "wheelchair_toilet": "Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө:" + }, + "titles": { + "basic": "Үндсэн мэдээлэл", + "optional": "Илүү их мэдээлэл (бүх газар сонголтоор)" + } + }, + "global": { + "form_validation_error": "Дараах алдаануудыг анхаарна уу" + }, + "header": { + "meta": { + "description": "Wheelmap.org бол тэргэнцэрт хүртээмжтэй газруудыг хайх, олох болон тэмдэглэх цахим газарзүйн зураглал юм. Бидэнтэй нэгдэж уушийн газар, зоогийн газар, кино театр болон худалдааны төв гэх мэт өөрийн үйлчлүүлж буй олон нийтийн газруудыг тэмдэглээрэй!", + "homepage": "Нүүр хуудас ", + "keywords": "Тэргэнцэрт хүртээмжтэй газруудыг олох хайлтын тэмдэглэгээ", + "search": "Хайлт", + "title": "Wheelmap.org" + }, + "navigation": { + "blog": "Мэдээ", + "choose_language": "Хэлээ сонгоно уу.", + "contact": "Холбоо барих ", + "faq": "Түгээмэл Асуулт Хариулт", + "feedback": "Хариу ", + "home": "Эхлэх ", + "how_to_add_a_place": "Би хэрхэн газар нэмэх вэ?", + "imprint": "Тэмдэглэх ", + "logged_in_as": "Дараах байдлаар нэвтэрсэн байна:", + "login": "Нэвтрэх", + "logout": "Гарах", + "map": "Газарзүйн зураглал", + "newsletter": "Мэдээллийн самбар ", + "press": "Хэвлэл", + "privacy": "Privacy Policy", + "profile": "Хувийн хэрэг", + "projects": "Элслээ ", + "report_problem": "Асуудлыг мэдэгдэх ", + "suggestions": "Санал хүсэлтүүд ", + "travelguide": "Аялалын хөтөч ", + "what_is_barrier_free": "\"Тэргэнцэрт хүртээмжтэй\" гэдэг нь юу гэсэн утгатай вэ?", + "what_is_wheelmap": "Wheelmap гэж юу вэ?" + }, + "searchbar": { + "add_place": "Өөр газар нэмэх", + "find": "Хайх", + "placeholder": "Тухайн газрыг хайх", + "title_add_place": "Яг одоо энэ байршилд шинэ газар нэмэх!" + }, + "tagline": "Wheelmap лого ", + "title": "Тэргэнцэр хүртээмжтэй газруудыг олох ", + "toolbar": { + "categories": "Ангилал" + } + }, + "helpers": { + "page_entries_info": { + "more_pages": { + "display_entries": "Displaying %{entry_name} %{first} - %{last} of %{total} in total" + }, + "one_page": { + "display_entries": { + "one": "Displaying %{count} %{entry_name}", + "other": "Displaying all %{count} %{entry_name}", + "zero": "No %{entry_name} found" + } + } + }, + "select": { + "prompt": "Сонголтоо хийнэ үү" + }, + "submit": { + "create": "үүсгэх %{model}", + "submit": "хадгалах %{model}", + "update": "шинэчилэх %{model}" + } + }, + "home": { + "index": { + "embed_link": "Wheelmap.org дээр харуул", + "filter": { + "category": "Ангилалаа сонгоно уу", + "deselect_all": "Бүгдийг дахин сонго", + "select_all": "Бүгдийг сонго", + "wheelchair": "Тэргэнцэрт хүртээмжтэй юу?" + }, + "ie": { + "action": { + "ignore": "Хэрэгсэхгүй болгох ", + "upgrade": "Хөтөч шинэчлэл" + }, + "warning": { + "headline": "Биднийг өршөөнө үү!", + "message": "Та интернэт хөтчийг ашиглаж байна. Wheelmap нь стандартад нийцсэн хөтчүүдийг ашиглахыг шаарддаг. Firefox, Chrome, Safari эсвэл Opera зэрэг хөтчүүдийг ашиглана уу. " + } + }, + "link": { + "node": { + "create": "Шинэ газар нэмэх " + } + }, + "overlay": { + "button": "Эхэлцгээе!", + "categories": "Ангилалаар газруудыг шүүж харуулах", + "filter": "Тэргэнцэрт хүртээмжтэй газруудыг шүүж харуулах", + "headline": "Дэлхий даяар хүн бүр чөлөөтэй ашиглаж болох Wheelmap.org сайт дээр тэргэнцэрт хүртээмжтэй газруудыг хайж ол бас тэмдэглэ. Энэ үнэхээр амархан. ", + "lookup": "Тусгай газруудыг хайх", + "secondary_headline": "Олон нийтийн тэргэнцэрт хүртээмжтэй газруудыг тэмдэглэхэд бид замын хөдөлгөөний гэрлэн дохионы системийг ашигладаг. " + }, + "popup": { + "form": { + "limited": "Тэргэнцэрт хэсэгчилсэн хүртээмжтэй ", + "no": "Тэргэнцэрт хүртээмжтэй бус", + "save": "Шинэчилэх ", + "unknown": "Таниулаагүй өгөгдөл байна", + "yes": "Тэргэнцэрт хүртээмжтэй " + }, + "help": "Тэргэнцэрт хүртээмжтэй юу? (Тусламж)", + "more": "цааш ... " + }, + "zoom_alert": "Илүү олон газрыг харахын тулд томруулж хар " + } + }, + "how?": "Хэрхэн?", + "landing_pages": { + "index": { + "wheelchair": { + "limit": { + "headline": "Тэргэнцэрт хэсэгчилсэн хүртээмжтэй бүх %{type} %{city} -д (%{count}) " + }, + "no": { + "headline": "Тэргэнцэрт хүртээмжгүй бүх %{type} %{city} -д (%{count}) " + }, + "unknown": { + "headline": "Бүх %{type}дараах %{city}хотуудад тэргэнцэрт хүртээмжтэй эсэх нь тодорхой бус (%{count}) " + }, + "yes": { + "headline": "Тэргэнцэрт хүртээмжтэй бүх %{type} нь %{city} -д (%{count}) " + } + } + } + }, + "layouts": { + "application": { + "banner": { + "alt": "Sozialhelden.de төсөл нь" + } + } + }, + "models": { + "category": { + "prompt": "Ангилалыг сонгох " + }, + "node": { + "info_edit_position": "Энэ байршил нь Wheelmap -д дээрх байдлаар харагдах болно. Хэрвээ буруу тэмдэглэгээ хийгдсэн бол та OpenStreetMap дээр өөрчлөлт хийж болно", + "mail": { + "body": "(Зөвхөн Англи эсвэл Герман хэлээр бичнэ.)\n\nСайн байна уу Sozialhelden,\nбайршил алдаатай байна: %{url}\n\nАсуудал нь: ", + "subject": "[Wheelmap] Асуудал нь %{headline}" + } + }, + "node_type": { + "prompt": "Төрлийг сонгох " + } + }, + "node": { + "address": { + "city": "%{city}%{postcode}", + "street": "%{housenumber}%{street}" + }, + "tags": { + "phone": "Утасны дугаар:", + "website": "Цахим хуудас: " + } + }, + "nodes": { + "create": { + "flash": { + "not_successfull": "Уучлаарай, таны өгөгдөл буруу эсвэл бүрэн биш байна", + "successfull": "Баярлалаа, таны хүсэлт амжилттай хадгалагдаж онлайн хэлбэрээр байршилаа." + } + }, + "edit": { + "header": { + "title": "Газарт засвар хийх: %{node} wheelmap.org" + }, + "link": { + "large_map": "« Цуцлах" + } + }, + "errors": { + "default": "Уучлаарай, ямар нэгэн зүйл буруу байна. Бид энэ асуудлын талаар мэдэгдсэн болно.", + "not_authorized": "Уучлаарай, нэвтрэлт амжилтгүй боллоо", + "not_available": "Уучлаарай, энэ хуудас түр хугацаагаар идэвхгүй байна.", + "not_existent": "Уучлаарай, энэ газар ашиглалтнаас гарсан байна.", + "not_found": "Уучлаарай, хуудас олдсонгүй.", + "param_missing": "Хайлтын нөхцлийг сайжруулна уу " + }, + "flash": { + "authorize_wheelmap": " Мэдээлэлдээ өөрчлөлт оруулахад тань OpenStreetMap хэрэглэгчийн бүртгэл хэрэгтэй " + }, + "new": { + "form": { + "legend": "Газрын байршил ", + "location": "Газрын байршилийг газарзүйн зураглал дээр харуул!", + "section": { + "accessibility": { + "name": "Тэргэнцэрт хүртээмжтэй", + "title": "Тэргэнцэрт хүртээмжтэй гэсэн мэдээлэл" + }, + "address": { + "help": "Та газарзүйн зураглал дээр тэмдэглэсэн газрынхаа тэмдэглэгчийг зөв байршилд шилжүүлэх боломжтой. ", + "name": "Хаяг", + "title": "Газар хаана байрладаг вэ?" + }, + "contact": { + "name": "Холбоо барих ", + "title": "Бусад холбоо барих мэдээлэл" + }, + "name_category": { + "name": "Газрын төрөл болон нэр ", + "title": "Тэмдэглэсэн газрынхаа анхдагч мэдээллийг бидэнд өгнө үү: " + }, + "overview": { + "title": "Эдгээр мэдээллүүд нь зөв үү?" + }, + "similar_nodes": { + "empty": "Ижил газрууд олдсонгүй.", + "go_edit": "Энэ газрыг үргэлжлүүл", + "go_new": "Энэ дээрх газруудын нэг биш байна ...", + "name": "Адилхан газар", + "title": "Бид ойролцоо ижил төстэй газар оллоо. Энэ тэргээрийн нэг хэсэг нь үү?" + } + }, + "title": "Газар нэмэх " + }, + "header": { + "title": "Шинэ газар | wheelmap.org" + }, + "link": { + "large_map": "« Цуцлах " + } + }, + "node": { + "link": { + "claim": "Та энд ажилладаг уу?", + "edit_node": "Газрыг засварлах", + "report_bug": "Асуудлыг мэдэгдэх " + } + }, + "node_data": { + "address": "Хаяг:", + "contact_details": "Холбоо барих мэдээлэл:" + }, + "node_edit": { + "details": "Нарийвчилсан мэдээлэл", + "edit": "Засварлах" + }, + "node_map": { + "map": "Газарзүйн зураглал:" + }, + "node_nearby": { + "places_nearby": "Places nearby:" + }, + "node_note": { + "comment": "Сэтгэгдэл:" + }, + "node_photos": { + "add": "Нэмэх", + "alert": "Мэдэгдэл: Орох гарах гарцын зураг нь дараах зүйлсийг маш тод харуулсан байх ёстой. Орох гарах гарц шаттай эсэх? Хаалга хэр өргөн эсэх? Босгоны өндөр ойролцоогоор? Зураг нь JPG эсвэл PNG хувилбартай байх ёстой. Мөн 10 MB хэмжээнээс хэтрэхгүй байх хэрэгтэй. ", + "photos_of_this_place": "Энэ газрын зурагнууд:", + "upload": "Хуулах " + }, + "node_similar": { + "similar": "Адилхан газрууд %{name}" + }, + "node_status": { + "accessible_toilet": "Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө:", + "premium": "%{name} Өгүүлэмж: Энэ газар бол ", + "wheelchair_accessibility": "Тэргэнцэрт хүртээмжтэй: " + }, + "node_streetview": { + "streetview": "Гудамжны харагдах байдал:" + }, + "show": { + "header": { + "meta": { + "description": "Хэрвээ энэ газар нь тэргэнцэрт хүртээмжтэй бол Wheelmap.org сайт дээрээс олдох болно. Эсвэл дэлгэрэнгүй мэдээлэл болон зурагнуудыг нэмнэ үү. ", + "title": "Энэ газар нь Wheelmap.org сайт дээр байна: %{name}" + }, + "title": "Газар: %{node}Wheelmap.org " + }, + "link": { + "back": "Буцах", + "large_map": "Томруулах", + "listing": "Бүх газар дараах төрлөөр '%{type}' %{city}-д", + "upload": "Зураг хуулах " + }, + "more_data_from": "Энд тухайн газрын талаар илүү мэдээлэл байгаа ба дараах байдлаар баталгаажсан болно:", + "share": { + "email": "Цахим хаяг ", + "facebook": "Facebook", + "text": "Энэ газар нь Wheelmap.org сайт дээр олдлоо: %{name}", + "twitter": "Twitter" + }, + "show-in-osm": "OpenStreetMap" + }, + "update": { + "flash": { + "not_successfull": "Уучлаарай, таны өгөгдөл буруу эсвэл бүрэн биш байна ", + "successfull": "Баярлалаа, таны хүсэлт амжилттай хадгалагдаж онлайн хэлбэрээр байршилаа. " + } + }, + "update_wheelchair": { + "successfull": "Төрөл нь \"%{name}\" байсан бөгөөд \"%{status}\" болж өөрчлөгдөж онлайн хэлбэрт шилжлээ. " + } + }, + "number": { + "currency": { + "format": { + "delimiter": ", ", + "format": "%u%n", + "precision": 2, + "separator": ".", + "significant": false, + "strip_insignificant_zeros": false, + "unit": "$" + } + }, + "format": { + "delimiter": ", ", + "precision": 3, + "separator": ". ", + "significant": false, + "strip_insignificant_zeros": false + }, + "human": { + "decimal_units": { + "format": "%n%u", + "units": { + "billion": "Тэрбум ", + "million": "Сая", + "quadrillion": "Квадрилион", + "thousand": "Мянга", + "trillion": "Их наяд", + "unit": "" + } + }, + "format": { + "delimiter": "", + "precision": 3, + "significant": true, + "strip_insignificant_zeros": true + }, + "storage_units": { + "format": "%n%u ", + "units": { + "byte": { + "one": "Byte ", + "other": "Bytes" + }, + "gb": "GB", + "kb": "KB", + "mb": "MB", + "tb": "TB" + } + } + }, + "percentage": { + "format": { + "delimiter": "", + "format": "%n%" + } + }, + "precision": { + "format": { + "delimiter": "" + } + } + }, + "oauth": { + "application": { + "connect": { + "headline": "Wheelmap.org хуудсанд шинээр газар нэмэх болон тохируулга хийхээсээ өмнө та OpenStreetMap хэрэглэгчийн эрхээрээ нэвтрэн орох хэрэгтэй. " + } + }, + "callback": { + "notice": "Таны Wheelmap хэрэглэгчийн эрх OpenStreetMap - тай холбогдсон байна %{user}." + } + }, + "or": "эсвэл ", + "place": { + "one": "%{count} газрууд", + "other": "%{count} газрууд " + }, + "poi": { + "category": { + "accommodation": "Байр, сууц", + "education": "Боловсрол", + "food": "Хоол, хүнс", + "government": "Засгийн газар ", + "health": "Эрүүл мэнд", + "leisure": "Чөлөөт цаг", + "misc": "Нэмэлт зүйлс", + "money_post": "Банк / Шуудан", + "public_transfer": "Нийтийн тээвэр", + "shopping": "Дэлгүүр", + "sport": "Спорт", + "tourism": "Аялал жуулчлал", + "unknown": "Танигдаагүй " + }, + "name": { + "accommodation": { + "beach_resort": "Далайн эргийн зочид буудал", + "bed_and_breakfast": "Ор ба өглөөний цай", + "camp_site": "Майхан", + "caravan_site": "Чиргүүл ", + "chalet": "Дүнзэн байшин", + "dormitory": "Олон ортой унтлагын өрөө", + "guest_house": "Зочид буудаллах байшин ", + "hostel": "Дэн буудал", + "hotel": "Зочид буудал", + "motel": "Гэр буудал" + }, + "education": { + "college": "Коллеж", + "driving_school": "Жолооны курс", + "kindergarten": "Цэцэрлэг", + "library": "Номын сан", + "museum": "Музей", + "school": "Сургууль", + "university": "Их сургууль" + }, + "food": { + "bar": "Баар", + "biergarten": "Цэцэрлэгт хүрээлэн", + "cafe": "Кафе", + "drinking_water": "Уух ус ", + "fast_food": "Түргэн хоол", + "ice_cream": "Зайрмаг худалдаалах газар", + "pub": "Уушийн газар", + "restaurant": "Зоогийн газар" + }, + "government": { + "courthouse": "Шүүхийн байр", + "embassy": "Элчин ", + "employment_agency": "Хөдөлмөр зуучлалын газар", + "government": "Засгийн газрын агентлаг ", + "police": "Цагдаа", + "public_building": "Олон нийтийн байгууламж ", + "townhall": "Хотын захиргаа" + }, + "health": { + "alternative": "Уламжлалт эмчилгээ", + "dentist": "Шүдний эмч", + "doctors": "Эмч ", + "hearing_aids": "Сонсголын туслах хэрэглэгдэхүүн худалдаалагч ", + "hospital": "Эмнэлэг", + "medical_supply": "Эм ханган нийлүүлэгч ", + "occupational_therapist": "Хөдөлгөөн засалч ", + "pharmacy": "Эмийн сан", + "physiotherapist": "Физик эмчилгээний эмч ", + "psychotherapist": "Сэтгэлзүйч ", + "social_facility": "Нийгмийн үйлчилгээний газар", + "speech_therapist": "Яриа засалч ", + "veterinary": "Амьтдын эмч " + }, + "leisure": { + "arena": "Төв цэнгэлдэх ", + "brothel": "Эмсийн хүрээлэн ", + "casino": "Казино", + "cinema": "Кино театр ", + "community_centre": "Олон нийтийн төв ", + "gallery": "Үзэсгэлэн ", + "massage": "Алжаал тайлах газар", + "nightclub": "Шөнийн цэнгээний газар", + "playground": "Тоглоомын талбай", + "sauna": "Саун", + "stripclub": "Тайчигч клуб", + "tattoo": "Шивээсний дэлгүүр", + "theatre": "Театр", + "zoo": "Амьтны хүрээлэн" + }, + "misc": { + "association": "Холбоо", + "company": "Хувийн хэвшил (Office)", + "estate_agent": "Үл хөдлөх хөрөнгө зуучын газар", + "insurance": "Даатгал", + "lawyer": "Хуульч", + "ngo": "Төрийн Бус Байгууллага", + "place_of_worship": "Мөргөлийн газар", + "political_party": "Улс төрийн намын байр", + "toilets": "Аруин цэврийн өрөө" + }, + "money_post": { + "atm": "АТМ", + "bank": "Банк", + "bureau_de_change": "Валют арилжааны газар ", + "post_box": "Шуудангийн хайрцаг", + "post_office": "Шуудан " + }, + "public_transfer": { + "aerodrome": "Нисэх онгоцны буудал", + "bicycle_parking": "Дугуйн зогсоол", + "bicycle_rental": "Дугуй түрээсийн газар", + "boatyard": "Усан онгоцны зогсоол", + "bus_station": "Автобусны буудал", + "bus_stop": "Автобусны зогсоол", + "cable_car": "Тралейбус", + "car_rental": "Машин түрээсийн газар", + "car_sharing": "Албан бус такси үйлчилгээ", + "chair_lift": "Өргөгч сандал ", + "ferry": "Сүйх тэрэг", + "ferry_terminal": "Сүйх тэрэгний зогсоол", + "fuel": "Түлш түгээгүүрийн газар", + "halt": "Зогсоол", + "light_rail": "Гэрэлт зам ", + "parking": "Машины зогсоол", + "parking_aisle": "Онгоцны буудлын зогсоол", + "platform": "Платформ", + "station": "Галт тэрэгний буудал", + "subway_entrance": "Метроны нэвтрэх гарц ", + "terminal": "Нисэх онгоцны тавцан ", + "tram_stop": "Трамвайн зогсоол" + }, + "shopping": { + "alcohol": "Архи худалдаалах цэг ", + "antiques": "Эртний эдлэлийн дэлгүүр ", + "art": "Галлирей дэлгүүр", + "bakery": "Бэйкери ", + "beauty": "Гоо сайхны салон ", + "beverages": "Ундаа ", + "bicycle": "Моторт дугуйн дэлгүүр", + "books": "Номын худалдаа", + "butcher": "Мах худалдаалах цэг", + "car_repair": "Машин засварын газар", + "car_shop": "Машин худалдааны газар", + "chemist": "Эмийн сан ", + "clothes": "Хувцас", + "computer": "Компьютер ", + "confectionery": "Чихрийн дэлгүүр", + "convenience": "Түргэн үйлчилгээний цэг", + "copyshop": "Канон, принтэр ", + "deli": "Мухлаг ", + "department_store": "Их дэлгүүр ", + "doityourself": "Өөрөө өөртөө үйлчилэх цэг", + "dry_cleaning": "Хуурай хими цэвэрлэгээ", + "electronics": "Электрон бараа ", + "erotic": "Секс хэрэгсэлийн дэлгүүр", + "fabric": "Бөс даавууны дэлгүүр ", + "farm_shop": "Хөдөө аж ахуйн тоног төхөөрөмж худалдааны газар", + "florist": "Цэцгийн худалдаа ", + "funeral_directors": "Оршуулгын газар ", + "furniture": "Тавилгын худалдаа ", + "garden_centre": "Цэцэрлэгт хүрээлэн ", + "gift": "Бэлэг дурсгалын дэлгүүр ", + "greengrocer": "Жимс ногооны худалдаа ", + "hairdresser": "Үсчин ", + "hardware": "Компьютерийн сэлбэг худалдаа ", + "interior_decoration": "Дотоод засал чимэглэлийн дэлгүүр ", + "jewelry": "Үнэт эдлэлийн дэлгүүр ", + "kiosk": "Нийтийн хоолны газар", + "laundry": "Хувцас цэвэрлэгээний үйлчилгээ ", + "mall": "Худалдааны төв ", + "mobile_phone": "Гар утасны дэлгүүр ", + "music": "Дуу бичлэг худалдаалах дэлгүүр", + "musical_instrument": "Хөгжмийн зэмсгийн дэлгүүр ", + "newsagent": "Мэдээний агентлаг ", + "optician": "Хараазүйн эмч ", + "organic": "Органик бүтээгдэхүүний дэлгүүр ", + "outdoor": "Аялал зугаалгын хэрэгсэл нийлүүлэгч ", + "pet": "Амьтны дэлгүүр ", + "photo": "Зураг ", + "second_hand": "Гар дамжсан худалдаа", + "shoes": "Гутал ", + "sports": "Спорт", + "stationery": "Бичиг хэргийн дэлгүүр ", + "supermarket": "Супермаркет", + "tailor": "Оёдолчин ", + "tea": "Цай нийлүүлэгч", + "tobacco": "Тамхины дэлгүүр", + "toys": "Тоглоом", + "travel_agency": "Аялалын агентлаг", + "variety_store": "Хямдралтай худалдааны дэлгүүр", + "video": "Видео түрээсийн газар" + }, + "sport": { + "pitch": "Спортын талбай ", + "sports_centre": "Спортын төв", + "stadium": "Стадион ", + "swimming": "Усан спорт ", + "swimming_pool": "Усан сан " + }, + "tourism": { + "archaeological_site": "Археологийн бүс ", + "arts_centre": "Урлагын төв ", + "artwork": "Урлагын бүтээл", + "attraction": "Хүмүүсийн очих дуртай газар", + "battlefield": "Дайны талбар ", + "beach": "Далайн эрэг", + "beacon": "Гэрэлт цамхаг", + "castle": "Ордон ", + "cave_entrance": "Агуйн ам ", + "information": "Жуулчдын мэдээлэл", + "memorial": "Дурсгалт газар", + "theme_park": "Соёл амралтын цэцэрлэгт хүрээлэн", + "tower": "Цамхаг", + "viewpoint": "Алсыг харах цэг" + }, + "unknown": { + "unknown": "Тодорхойгүй газар" + } + } + }, + "profile": { + "edit": { + "application": { + "oauth": { + "connected": "Төлөв: холбогдсон", + "grant": "Холбогдоно уу ", + "not_connected": "Төлөв: Холбогдоогүй ", + "revoke": "Салгах " + } + }, + "headline": "Профайл тохиргоо хийх " + } + }, + "ransack": { + "all": "all", + "and": "and", + "any": "any", + "asc": "ascending", + "attribute": "attribute", + "combinator": "combinator", + "condition": "condition", + "desc": "descending", + "or": "or", + "predicate": "predicate", + "predicates": { + "blank": "is blank", + "cont": "contains", + "cont_all": "contains all", + "cont_any": "contains any", + "does_not_match": "doesn't match", + "does_not_match_all": "doesn't match all", + "does_not_match_any": "doesn't match any", + "end": "ends with", + "end_all": "ends with all", + "end_any": "ends with any", + "eq": "equals", + "eq_all": "equals all", + "eq_any": "equals any", + "false": "is false", + "gt": "greater than", + "gt_all": "greater than all", + "gt_any": "greater than any", + "gteq": "greater than or equal to", + "gteq_all": "greater than or equal to all", + "gteq_any": "greater than or equal to any", + "in": "in", + "in_all": "in all", + "in_any": "in any", + "lt": "less than", + "lt_all": "less than all", + "lt_any": "less than any", + "lteq": "less than or equal to", + "lteq_all": "less than or equal to all", + "lteq_any": "less than or equal to any", + "matches": "matches", + "matches_all": "matches all", + "matches_any": "matches any", + "not_cont": "doesn't contain", + "not_cont_all": "doesn't contain all", + "not_cont_any": "doesn't contain any", + "not_end": "doesn't end with", + "not_end_all": "doesn't end with all", + "not_end_any": "doesn't end with any", + "not_eq": "not equal to", + "not_eq_all": "not equal to all", + "not_eq_any": "not equal to any", + "not_in": "not in", + "not_in_all": "not in all", + "not_in_any": "not in any", + "not_null": "is not null", + "not_start": "doesn't start with", + "not_start_all": "doesn't start with all", + "not_start_any": "doesn't start with any", + "null": "is null", + "present": "is present", + "start": "starts with", + "start_all": "starts with all", + "start_any": "starts with any", + "true": "is true" + }, + "search": "search", + "sort": "sort", + "value": "value" + }, + "search": { + "index": { + "no-results": { + "headline": "Уучлаарай, энэ нэршлээр ямар нэгэн газар олдсонгүй \"%{query}\"", + "hint": { + "example": "Жишээ нь: Лондон, Нэгдсэн Улс ", + "info": "Манай хайлтын систем нь нэр эсвэл хаягын мэдээлэл оруулсан нөхцөлд ажиллах болно. Мөн нэр болон хаягаар зэрэг хайлт хийж болно. жишээ нь: хот болон гудамжны нэр. Харин дараах байдлаар хайлт хийвэл ажиллахгүй болохыг анхаарна уу! Газрын төрлөөр, жишээ нь: зоогийн газар, кино театр гэх мэт ", + "work_in_progress": "Бид хайлтын системээ илүү хялбар ирээдүйн шаардлагад нийцсэн болгох тал дээр шаргуу ажиллаж байна. " + }, + "try_this": { + "address": "Нарийвчилсан хаягжилтийн мэдээллийг дэлгэрэнгүй өгнө үү.", + "intro": "Үүнийг туршаад үзнэ үү: ", + "spell_check": "Та үсгийн алдаагаа шалгана уу. " + } + }, + "results": { + "ticker": { + "one": "%{count}үр дүн:", + "other": "%{count}үр дүнгүүд: " + } + }, + "search": { + "for": "Хайлт хийж байна \"%{q}\"", + "not_found": "Хайсан газар олдсонгүй!" + } + }, + "timeout": { + "headline": "Уучлаарай, зарим нэгэн зүйлс буруу байна ", + "info": "Манай хайлтын үйлчилгээ түр хугацаагаар ажиллахгүй болохыг анхаарна уу. ", + "repeat_search": "Дахин хайлт хийнэ үү" + } + }, + "splash": { + "countline": "%{count} газрууд тэмдэглэгдсэн байна. ", + "headline": "Хүн бүр тэргэнцэрт хүртээмжтэй газруудыг нэмэх боломжтой!", + "start": "Эхлэх", + "step1": "Өөрийн мэдэх газраа сонгоно уу", + "step2": "Тэмдэглээд дараа нь хадгалах гэсэн товчлуурыг дарна уу", + "step3": "Энэ хангалттай! Бүртгүүлэх шаардлагагүй ", + "what_is_wheelmap": "Wheelmap гэж юу вэ? " + }, + "statistics": "Үзүүлэлтүүд", + "support": { + "array": { + "last_word_connector": "мөн", + "sentence_connector": "бас", + "two_words_connector": "түүнчлэн ", + "words_connector": ", " + }, + "select": { + "prompt": "Сонголтоо хийнэ үү" + } + }, + "time": { + "am": "am", + "formats": { + "default": "%a,%d%b %Y %H:%M:%S %z ", + "long": "%B %d, %Y %H:%M ", + "short": "%d%b %H:%M " + }, + "pm": "pm" + }, + "toiletstatus": { + "no": "Тэргэнцэрт хүртээмжгүй ариун цэврийн өрөө", + "unknown": "Ариун цэврийн өрөөний төлөв мэдэгдэхгүй байна", + "what_is": { + "no": "Хаалганы дотор өргөн хамгийн багадаа 90см (35инч), шалны цэвэр хэмжээ хамгийн багадаа 150 x 150 см (59 x 59инч), суултуур болон тэргэнцэрийн өндрийн хэмжээ адил түвшинд байх, эвхэгддэг хашлагууд болон гар бариултай буюу хүртээмжтэй ванн ", + "unknown": "Ариун цэврийн өрөөний төлөвийг тогтооход туслана уу!", + "yes": "Хаалганы дотор өргөн хамгийн багадаа 90см (35инч), шалны цэвэр хэмжээ хамгийн багадаа 150 x 150 см (59 x 59инч), суултуур болон тэргэнцэрийн өндрийн хэмжээ адил түвшинд байх, эвхэгддэг хашлагууд болон гар бариултай буюу хүртээмжтэй ванн" + }, + "yes": "Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө " + }, + "user_sessions": { + "create": { + "activation": { + "notice": "Таны бүртгэл идэвхижлээ!" + }, + "error": { + "notice": "Имэйл хаяг болон нууц үг таарахгүй байна." + }, + "notice": "Та нэвтэрсэн байна!" + }, + "destroy": { + "notice": "Баяртай, удахгүй эргэн уулзъя! " + }, + "new": { + "email": "Имэйл хаяг", + "login": "Нэвтрэх ", + "login_with_twitter": "Twitter хаягаар нэвтрэх ", + "password": "Нууц үг ", + "remember_me": "Нэвтэрсэн хэвээр байна" + } + }, + "users": { + "after_signup_edit": { + "welcome": { + "headline": "Та бараг хүрлээ! Одоо та Wheelmap хэрэглэгчийн бүртгэлээ дуусгана уу:", + "set_password_for_mobile": "Та OpenStreetMap -д амжилттай бүртгэгдлээ. Та Wheelmap-д өөрийн мэйл хаягийг бүртггүүлснээр бид таны үйл ажиллагааг цаг алдалгүй мэдэгдэж байх болно. (жишээ нь: таны тэмдэглэсэн газрын тоо). Мөн та энэ мэдээллийг өөрийн \"Профайл\" дээрээ хүлээн авах боломжой. ", + "text": "Бид таньтай хэрхэн холбоотой байх вэ? Та энэ мэдээллийг дараа нь өөрийн Профайл дээрээ өөрчлөх боломжтой." + } + }, + "edit": { + "headline": { + "your_images": "Таны байршуулсан зурагнууд" + } + }, + "profile": { + "edit": { + "legends": { + "user_data": "Таны бүртгэлийн тухай мэдээлэл" + }, + "title": "Хувийн хэрэг" + }, + "newsletter": { + "label": "Тийм, wheelmap - ийн тухайд намайг шинэчилнэ үү.", + "text": "Wheelmap мэдээ мэдээлэлтэй хамт байгаарай. Санаа зоволтгүй, бид танд ямар нэгэн хохирол учруулахгүй. Хамгийн ихдээ сардаа ганц удаа биднээс мэдээ мэдээлэл хүлээж авах болно. ", + "title": "Мэдээллийн самбар " + }, + "photos": { + "empty": "Та одоогоор ямар нэгэн зураг оруулаагүй байна.", + "title": "Зураг" + }, + "show": { + "greeting": { + "anonymously": "Сайн байна уу ", + "personalized": "Сайн байна уу %{name}" + }, + "overview": { + "photos_uploaded": { + "one": "татаж оруулсан %{count} зурагнууд ", + "other": "татаж оруулсан %{count} зурагнууд " + }, + "pois_added": { + "one": "нэмэгдсэн %{count}газрууд ", + "other": "нэмэгдсэн %{count} газрууд " + }, + "pois_edited": { + "one": "засварлагдсан %{count}газрууд ", + "other": "засварлагдсан %{count}газрууд " + }, + "pois_marked": { + "one": "тэмдэглэгдсэн %{count}газрууд ", + "other": "тэмдэглэгдсэн %{count}газрууд " + }, + "text": "Танд бий " + }, + "text_html": "Сайн байна уу,
\n Wheelmap.org! –т (эргэн) тавтай морил! Бид таньтай хамтран ажиллах болсондоо баяртай байна! Та бидний Блог эсвэл Тогтмол асуулт хариулт хэсгээр нэвтэрч болно. Хэрвээ та Wheelmap.org сайтын талаарү ихийг мэдэхийг, эсвэл төслийн талаар илүү ихийг сурахыг хүсвэл бид тань руу Wheelmap.org! сайтад хэрхэн ажиллах талаар зааварчилгаа илгээх болно.
\n Та бидэнтэй холбоотой байж биднийг олон нийтийн сүлжээ болох Facebook болон Twitter -т дагаснаар бидний гаргадаг сар тутмын мэдээ мэдээллүүдийг хүлээж авах болно. Бид таньтай холбоо тогтоон, таны санаа бодлыг сонсохдоо таатай байх болно.
\n Та одоо зураглалаа тааваараа хийж болно!
\n Газарзүйн зураглалын баг ", + "title": "Ерөнхий байдлаар харах " + }, + "widget": { + "categories": "Ангилалаар шүүж харах", + "center": "Газрын зургийн талбар ", + "empty_center": "Газрын зургийн төвөөс эхлэн хайлт хийх ...", + "empty_provider": "Нийлүүлэгчийг сонгох ", + "height": "Өндрийн хэмжээ", + "legends": { + "embed": "Суулгасан код", + "embed_explanation": "Та өөрийн харахыг хүссэн газрыг байршлийн дагуу буюу уртраг (lat), өргөрөг (lon) болон томруулж, жижигрүүлэх (zoom) байдлаар газарзүйн нарийвчилсан (виджет) тохиргоо хийж харах боломжтой. ", + "general": "Та өөрийн Wheelmap виджетийг бий болгон түүнийгээ өөрийн вэбсайт болон блогтоо оруулж болно. ", + "preview": "Урьдчилан харах", + "settings": "Тохиргоо" + }, + "providers": "Нийлүүлэгч ", + "title": "Виджет ", + "width": "Өргөний хэмжээ " + } + } + }, + "views": { + "pagination": { + "first": "« First", + "last": "Last »", + "next": "Next ›", + "previous": "‹ Prev", + "truncate": "…" + } + }, + "wheelchairstatus": { + "limited": "Хэсэгчилсэн газрууд тэргэнцэрт хүртээмжтэй", + "no": "Тэргэнцэрт хүртээмжтэй бус ", + "unknown": "Таниулаагүй өгөгдөл байна ", + "yes": "Тэргэнцэрт хүртээмжтэй" + }, + "wheelmap": { + "footer": { + "a_project_of": "Төслөөр ", + "based_on": "Суурилсан ", + "become_a_supporter": "Дэмжигч болох ", + "main_supporter": "Үндсэн дэмжигч " + }, + "itunes": { + "alt": "AppStore Logo", + "title": "IPhone App яг одоо татаж авах " + }, + "logo": { + "alt": "Wheelmap Logo - тэргэнцэрт хүртээмжтэй газруудыг хайх ", + "title": "Wheelmap - тэргэнцэрт хүртээмжтэй газруудыг хайх" + }, + "what_is": { + "fully_accessible": "Нэвтрэх орц, гарц гишгүүргүй; бүх өрөө гишгүүргүй", + "limited_accessible": "Нэвтрэх орц, гарц хамгийн ихдээ ганц шаттай. Өндөр нь 7см (3инч), ихэнх өрөөнүүд гишгүүргүй ", + "not_accessible": "Нэвтрэх орц, гарц гишгүүртэй ба цөөн хэдэн гишгүүртэй, өрөөнүүд хүртээмжтэй бус.", + "unknown_accessible": "Газар тэмдэглэхэд туслах! " + } + }, + "will_paginate": { + "next_label": "Дараа → ", + "page_entries_info": { + "multi_page": "Дэлгэцэнд %{count}-н %{model}-г %{from} - %{to}хоорондох байдлаар харуулж байна", + "multi_page_html": "Дэлгэцэнд %{model}-г %{count}-н байдлаар%{from} - %{to} хооронд харуулж байна ", + "single_page": { + "one": "Дэлгэцэнд 1 %{model} харуулж байна ", + "other": "Бүх %{count} %{model} дэлгэцэнд харуулж байна", + "zero": "%{model} олдсонгүй " + }, + "single_page_html": { + "one": "Дэлгэцэнд 1 %{model} харуулж байна ", + "other": "Дэлгэцэнд харуулж байна all  %{count}%{model}", + "zero": "%{model} олдсонгүй" + } + }, + "page_gap": "… ", + "previous_label": "← Previous " + } +}); diff --git a/app/assets/javascripts/i18n/nl.js b/app/assets/javascripts/i18n/nl.js index 58f037b1c..fe57ffb93 100644 --- a/app/assets/javascripts/i18n/nl.js +++ b/app/assets/javascripts/i18n/nl.js @@ -1393,9 +1393,9 @@ I18n.translations["nl"] = I18n.extend((I18n.translations["nl"] || {}), { "gt": "groter dan", "gt_all": "groter dan alle", "gt_any": "groter dan enig", - "gteq": "groter dan or equal to", - "gteq_all": "groter dan or equal to alle", - "gteq_any": "groter dan or equal to enig", + "gteq": "groter dan of gelijk aan", + "gteq_all": "groter dan of gelijk aan alle", + "gteq_any": "groter dan of gelijk aan enig", "in": "in", "in_all": "in alle", "in_any": "in enig", @@ -1425,7 +1425,7 @@ I18n.translations["nl"] = I18n.extend((I18n.translations["nl"] || {}), { "not_start_all": "start niet met alle", "not_start_any": "start niet met enig", "null": "is null", - "present": "is present", + "present": "is aanwezig", "start": "start met", "start_all": "start met alle", "start_any": "start met enig", diff --git a/app/assets/javascripts/i18n/ru.js b/app/assets/javascripts/i18n/ru.js index 6a4f48c65..985652358 100644 --- a/app/assets/javascripts/i18n/ru.js +++ b/app/assets/javascripts/i18n/ru.js @@ -833,7 +833,7 @@ I18n.translations["ru"] = I18n.extend((I18n.translations["ru"] || {}), { "few": "Показаны %{count} %{entry_name}", "many": "Показаны %{count} %{entry_name}", "one": "Показано %{count} %{entry_name}", - "other": "Показаны все %{count} %{entry_name}\"", + "other": "Показаны все %{count} %{entry_name}", "zero": "No %{entry_name} found" } } diff --git a/app/assets/javascripts/i18n/sv.js b/app/assets/javascripts/i18n/sv.js index 4bc5ee7de..226451c99 100644 --- a/app/assets/javascripts/i18n/sv.js +++ b/app/assets/javascripts/i18n/sv.js @@ -803,7 +803,7 @@ I18n.translations["sv"] = I18n.extend((I18n.translations["sv"] || {}), { "one_page": { "display_entries": { "one": "Visar %{count} %{entry_name}", - "other": "Visar alla ,%{count} %{entry_name}", + "other": "Visar alla %{count} %{entry_name}", "zero": "No %{entry_name} found" } } @@ -1607,8 +1607,8 @@ I18n.translations["sv"] = I18n.extend((I18n.translations["sv"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", + "first": "« Första", + "last": "Sista »", "next": "Nästa ›", "previous": "‹ Föregående", "truncate": "…" diff --git a/app/assets/javascripts/i18n/tr.js b/app/assets/javascripts/i18n/tr.js index 09c607ceb..aae5e39fd 100644 --- a/app/assets/javascripts/i18n/tr.js +++ b/app/assets/javascripts/i18n/tr.js @@ -806,10 +806,10 @@ I18n.translations["tr"] = I18n.extend((I18n.translations["tr"] || {}), { "helpers": { "page_entries_info": { "more_pages": { - "display_entries": "Displaying %{entry_name} %{first} - %{last} of %{total} in total" + "display_entries": "Toplam %{total} %{entry_name}; %{first} - %{last} arası gösteriliyor." }, "one_page": { - "display_entries": "all %{count} %{entry_name} gösteriliyor" + "display_entries": "%{count} %{entry_name} tamamı gösteriliyor" } }, "select": { @@ -1371,75 +1371,75 @@ I18n.translations["tr"] = I18n.extend((I18n.translations["tr"] || {}), { } }, "ransack": { - "all": "all", - "and": "and", - "any": "any", - "asc": "ascending", - "attribute": "attribute", - "combinator": "combinator", - "condition": "condition", - "desc": "descending", - "or": "or", - "predicate": "predicate", + "all": "hepsi", + "and": "ve", + "any": "herhangi", + "asc": "artan", + "attribute": "nitelik", + "combinator": "birleştirici", + "condition": "şart", + "desc": "azalan", + "or": "veya", + "predicate": "doğrula", "predicates": { - "blank": "is blank", - "cont": "contains", - "cont_all": "contains all", - "cont_any": "contains any", - "does_not_match": "doesn't match", - "does_not_match_all": "doesn't match all", - "does_not_match_any": "doesn't match any", - "end": "ends with", - "end_all": "ends with all", - "end_any": "ends with any", - "eq": "equals", - "eq_all": "equals all", - "eq_any": "equals any", - "false": "is false", - "gt": "greater than", - "gt_all": "greater than all", - "gt_any": "greater than any", - "gteq": "greater than or equal to", - "gteq_all": "greater than or equal to all", - "gteq_any": "greater than or equal to any", - "in": "in", - "in_all": "in all", - "in_any": "in any", - "lt": "less than", - "lt_all": "less than all", - "lt_any": "less than any", - "lteq": "less than or equal to", - "lteq_all": "less than or equal to all", - "lteq_any": "less than or equal to any", - "matches": "matches", - "matches_all": "matches all", - "matches_any": "matches any", - "not_cont": "doesn't contain", - "not_cont_all": "doesn't contain all", - "not_cont_any": "doesn't contain any", - "not_end": "doesn't end with", - "not_end_all": "doesn't end with all", - "not_end_any": "doesn't end with any", - "not_eq": "not equal to", - "not_eq_all": "not equal to all", - "not_eq_any": "not equal to any", - "not_in": "not in", - "not_in_all": "not in all", - "not_in_any": "not in any", - "not_null": "is not null", - "not_start": "doesn't start with", - "not_start_all": "doesn't start with all", - "not_start_any": "doesn't start with any", - "null": "is null", - "present": "is present", - "start": "starts with", - "start_all": "starts with all", - "start_any": "starts with any", - "true": "is true" - }, - "search": "search", - "sort": "sort", - "value": "value" + "blank": "boş", + "cont": "içeren", + "cont_all": "hepsini içeren", + "cont_any": "herhangi birini içeren", + "does_not_match": "eşleşmeyen", + "does_not_match_all": "hiçbiri ile eşleşmeyen", + "does_not_match_any": "herhangi biri ile eşleşmeyen", + "end": "ile biten", + "end_all": "hepsi ile biten", + "end_any": "herhangi biriyle biten", + "eq": "eşit", + "eq_all": "hepsine eşit", + "eq_any": "herhangi birine eşit", + "false": "yanlış", + "gt": "daha büyük ", + "gt_all": "hepsinden daha büyük", + "gt_any": "herhangi birinden daha büyük", + "gteq": "daha büyük veya eşit", + "gteq_all": "daha büyük veya hepsine eşit", + "gteq_any": "daha büyük veya herhangi birine eşit", + "in": "içinde", + "in_all": "hepsinde", + "in_any": "herhangi birinde", + "lt": "daha küçük", + "lt_all": "hepsinden küçük", + "lt_any": "herhangi birinden küçük", + "lteq": "daha küçük veya eşit", + "lteq_all": "daha küçük veya hepsine eşit", + "lteq_any": "daha küçük veya herhangi birine eşit", + "matches": "eşleşen", + "matches_all": "hepsi ile eşleşen", + "matches_any": "herhangi biri ile eşleşen", + "not_cont": "içermeyen", + "not_cont_all": "hiçbirini birini içermeyen", + "not_cont_any": "herhangi birini içermeyen", + "not_end": "ile bitmeyen", + "not_end_all": "hiçbiriyle bitmeyen", + "not_end_any": "herhangi biriyle bitmeyen", + "not_eq": "eşit değil", + "not_eq_all": "hiçbirine eşit değil", + "not_eq_any": "herhangi birine eşit değil", + "not_in": "içinde değil", + "not_in_all": "hiçbirinde değil", + "not_in_any": "herhangi birinde değil", + "not_null": "geçerli", + "not_start": "ile başlamayan", + "not_start_all": "hiçbiriyle başlamayan", + "not_start_any": "herhangi biriyle başlamayan", + "null": "geçersiz", + "present": "mevcut", + "start": "ile başlayan", + "start_all": "hepsiyle başlayan", + "start_any": "herhangi biriyle başlayan", + "true": "doğru" + }, + "search": "ara", + "sort": "sırala", + "value": "değer" }, "search": { "index": { @@ -1611,8 +1611,8 @@ I18n.translations["tr"] = I18n.extend((I18n.translations["tr"] || {}), { }, "views": { "pagination": { - "first": "« First", - "last": "Last »", + "first": "« İlk", + "last": "Son »", "next": "Sonraki ›", "previous": "‹ Önceki", "truncate": "…" diff --git a/app/assets/javascripts/i18n/zh.js b/app/assets/javascripts/i18n/zh.js index 879d07b15..e47e25907 100644 --- a/app/assets/javascripts/i18n/zh.js +++ b/app/assets/javascripts/i18n/zh.js @@ -1367,75 +1367,75 @@ I18n.translations["zh"] = I18n.extend((I18n.translations["zh"] || {}), { } }, "ransack": { - "all": "所有", - "and": "并且", - "any": "任意", - "asc": "升序", - "attribute": "属性", - "combinator": "条件组合(combinator)", - "condition": "条件", - "desc": "降序", - "or": "或者", - "predicate": "基于(predicate)", + "all": "all", + "and": "and", + "any": "any", + "asc": "ascending", + "attribute": "attribute", + "combinator": "combinator", + "condition": "condition", + "desc": "descending", + "or": "or", + "predicate": "predicate", "predicates": { - "blank": "为空", - "cont": "包含", - "cont_all": "包含所有值", - "cont_any": "包含任意一个值", - "does_not_match": "不符合", - "does_not_match_all": "不符合所有条件", - "does_not_match_any": "符合任意条件", - "end": "以改值结尾", - "end_all": "以所有值结尾", - "end_any": "以任意一个值结尾", - "eq": "等于", - "eq_all": "等于所有值", - "eq_any": "等于任意值", - "false": "等于false", - "gt": "大于", - "gt_all": "大于所有值", - "gt_any": "大于任意一个值", - "gteq": "大于等于", - "gteq_all": "大于等于所有值", - "gteq_any": "大于等于任意一个值", - "in": "被包含", - "in_all": "被所有值包含", - "in_any": "被任意值包含", - "lt": "小于", - "lt_all": "小于所有值", - "lt_any": "小于任意一个值", - "lteq": "小于等于", - "lteq_all": "小于等于所有值", - "lteq_any": "小于等于任意一个值", - "matches": "符合", - "matches_all": "符合所有条件", - "matches_any": "符合任意条件", - "not_cont": "不包含", - "not_cont_all": "不包含所有值", - "not_cont_any": "不包含任意一个值", - "not_end": "不以改值结尾", - "not_end_all": "不以所有值结尾", - "not_end_any": "不以任意一个值结尾", - "not_eq": "不等于", - "not_eq_all": "不等于所有值", - "not_eq_any": "不等于任意值", - "not_in": "不被包含", - "not_in_all": "不被所有值包含", - "not_in_any": "不被任意值包含", - "not_null": "不是null", - "not_start": "不以改值开始", - "not_start_all": "不以所有值开始", - "not_start_any": "不以任意一个值开始", - "null": "是null", - "present": "有值", - "start": "以改值开始", - "start_all": "以所有值开始", - "start_any": "以任意一个值开始", - "true": "等于true" - }, - "search": "搜索", - "sort": "排序", - "value": "数值" + "blank": "is blank", + "cont": "contains", + "cont_all": "contains all", + "cont_any": "contains any", + "does_not_match": "doesn't match", + "does_not_match_all": "doesn't match all", + "does_not_match_any": "doesn't match any", + "end": "ends with", + "end_all": "ends with all", + "end_any": "ends with any", + "eq": "equals", + "eq_all": "equals all", + "eq_any": "equals any", + "false": "is false", + "gt": "greater than", + "gt_all": "greater than all", + "gt_any": "greater than any", + "gteq": "greater than or equal to", + "gteq_all": "greater than or equal to all", + "gteq_any": "greater than or equal to any", + "in": "in", + "in_all": "in all", + "in_any": "in any", + "lt": "less than", + "lt_all": "less than all", + "lt_any": "less than any", + "lteq": "less than or equal to", + "lteq_all": "less than or equal to all", + "lteq_any": "less than or equal to any", + "matches": "matches", + "matches_all": "matches all", + "matches_any": "matches any", + "not_cont": "doesn't contain", + "not_cont_all": "doesn't contain all", + "not_cont_any": "doesn't contain any", + "not_end": "doesn't end with", + "not_end_all": "doesn't end with all", + "not_end_any": "doesn't end with any", + "not_eq": "not equal to", + "not_eq_all": "not equal to all", + "not_eq_any": "not equal to any", + "not_in": "not in", + "not_in_all": "not in all", + "not_in_any": "not in any", + "not_null": "is not null", + "not_start": "doesn't start with", + "not_start_all": "doesn't start with all", + "not_start_any": "doesn't start with any", + "null": "is null", + "present": "is present", + "start": "starts with", + "start_all": "starts with all", + "start_any": "starts with any", + "true": "is true" + }, + "search": "search", + "sort": "sort", + "value": "value" }, "search": { "index": { diff --git a/config/environments/production.rb b/config/environments/production.rb index 268198328..b6c75e332 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -84,7 +84,7 @@ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation can not be found) config.i18n.fallbacks = true - config.i18n.available_locales = [:ar, :bg, :cs, :da, :de, :el, :en, :es, :fr, :hu, :is, :it, :ja, :ko, :lv, :nl, :pl, :pt, :pt_BR, :ru, :sk, :sv, :tlh, :tr, :zh_TW] + config.i18n.available_locales = [:ar, :bg, :cs, :da, :de, :el, :en, :es, :fr, :hu, :is, :it, :ja, :ko, :lv, :mn, :nl, :pl, :pt, :pt_BR, :ru, :sk, :sv, :tlh, :tr, :zh_TW] # Send deprecation notices to registered listeners config.active_support.deprecation = :notify diff --git a/config/environments/staging.rb b/config/environments/staging.rb index 81a3c122d..3b7c14621 100644 --- a/config/environments/staging.rb +++ b/config/environments/staging.rb @@ -81,7 +81,7 @@ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation can not be found) config.i18n.fallbacks = true - config.i18n.available_locales = [:ar, :bg, :cs, :da, :de, :el, :en, :es, :fr, :hu, :is, :it, :ja, :ko, :lv, :nl, :pl, :pt, :pt_BR, :ru, :sk, :sv, :tlh, :tr, :zh_TW] + config.i18n.available_locales = [:ar, :bg, :cs, :da, :de, :el, :en, :es, :fr, :hu, :is, :it, :ja, :ko, :lv, :mn, :nl, :pl, :pt, :pt_BR, :ru, :sk, :sv, :tlh, :tr, :zh_TW] # Send deprecation notices to registered listeners config.active_support.deprecation = :notify diff --git a/config/initializers/wheelmap.rb b/config/initializers/wheelmap.rb index 596cc94a2..29865b484 100644 --- a/config/initializers/wheelmap.rb +++ b/config/initializers/wheelmap.rb @@ -20,6 +20,7 @@ 'ja' => '日本', 'ko' => '한국어', 'lv' => 'Latviešu', + 'mn' => 'монгол хэл', 'nb' => 'Norsk Bokmål', 'nl' => 'Nederlands', 'pl' => 'Polski', diff --git a/config/locales/mn/authentication.yml b/config/locales/mn/authentication.yml new file mode 100644 index 000000000..b53bb27fa --- /dev/null +++ b/config/locales/mn/authentication.yml @@ -0,0 +1,122 @@ +mn: + devise: + confirmations: + confirmed: "Таны цахим хаяг амжилттай баталгаажлаа. " + link: "Та баталгаажуулах зааварчилгааг хүлээж аваагүй юу?" + send_instructions: "Таны цахим хаягийг баталгуужуулах холбоос бүхий имэйл -ийг та хэдэн хормын дотор хүлээж авах болно." + send_paranoid_instructions: "Хэрвээ танд хэрэглэгчийн бүртгэл байгаа бол, таны хэрэглэгчийн бүртгэлийг хэрхэн баталгаажуулах зааварчилгаа бүхий имэйл -ийг хэдэн хормын дотор хүлээж авах болно. " + destroy: + confirm: "Та итгэлтэй байн уу?" + headline: "Хэрэглэгчийн бүртгэлийг устгах " + link: "Яг одоо устгах" + edit: + form: + labels: + current_password: "Одоо ашиглагдаж буй нууц үг (Энэ нь таны өөрчлөлтийг баталгаажуулахад бидэнд хэрэгтэй)" + email: Цахим шуудан + password: "Нууц үг (Хэрвээ та үүнийг өөрчлөхийг хүсэхгүй байгаа бол хоосон орхино уу)" + password_confirmation: "Нууц үгийг давтах " + submit: "Өөрчлөлтийг хадгалах " + headline: "Хэрэглэгчийн бүртгэлийг засварлах " + failure: + already_authenticated: "Та нэвтэрсэн байна." + inactive: "Таны хэрэглэгчийн бүртгэл хараахан идэвхжээгүй байна." + invalid: "Цахим хаяг эсвэл нууц үг хүчин төгөлдөр биш байна. " + invalid_token: "Хүчин төгөлдөр бус нэвтрэлт бүртгэгдсэн байна " + locked: "Таны хэрэглэгчийн бүртгэл түгжигдсэн байна" + timeout: "Таны оролдлого хэтэрсэн байна, үргэлжлүүлэхийн тулд нэвтрэн орно уу. " + unauthenticated: "Та үргэлжлүүлхийн өмнө нэвтрэх эсвэл бүртгүүлэх хэрэгтэй" + unconfirmed: "Үргэлжлүүлэхийн өмнө та өөрийн хэрэглэгчийн бүртгэлээ баталгаажуулах шаардлагатай:." + mailer: + confirmation_instructions: + landing_page: "Таны цахим хаяг руу явуулсан холбоос дээр дарна уу. Хэрвээ та биднээс ямар нэгэн имэйл хүлээж аваагүй бол, та өөрийн spam хавтасыг эхлэн шалгана уу. Хэрвээ тэнд байхгүй бол нэвтрэх хуудас руу буцаж дахин нэвтрэх оролдлого хийнэ үү. " + subject: "Та хэрэглэгчийн бүртгэлээ идэвхжүүлэхийн тулд дахин нэг алхам хийнэ үү" + reset_password_instructions: + subject: "Нууц үгийг дахин шинэчилэх заавар " + unlock_instructions: + subject: "Заавруудыг чөлөөлөх " + mandatory: "*Шаардлагатай " + omniauth_callbacks: + failure: "Эрх үүсгэх үйл явц дараах төрлөөр %{kind} бүтэлгүйтлээ. Алдаа: %{reason}" + permission_missing: "Та шаардлагатай зөвшөөрлүүдийг аваагүй байна." + success: "Та амжилттай нэвтэрлээ. %{kind}" + password_recovery: + form: + labels: + email: Цахим шуудан + submit: "Нууц үгийг шинэчилэх " + headline: "Та нууц үгээ мартсан уу?" + password_reset: + email: + comment: "Хэрвээ та нууц үгээ шинэчилэх хүсэлт илгээгээгүй бол, энэ имэйл -ийг хэрэгсэхгүй байж болно.
Дээрх холбоосоор нэвтрэн нууц үгээ шинэчилэх хүртэл таны одоогийн хэрэглэж байгаа нууц үг өөрчлөгдөхгүй." + headline: "Тавтай морил %{email}" + link: "Миний нууц үгийг өөрчил " + text: "Бид таны нууц үгийг өөрчлөх хүсэлт хүлээж авсан. Хэрвээ та хүсэлт илгээсэн бол, холбоосоор нэвтэрнэ үү - үгүй бол үүнийг үл хэрэгсэнэ үү!" + form: + labels: + password: "Шинэ нууц үг" + password_confirmation: "Нууц үгийг давтах " + submit: "Нууц үгийг шинэчилэх " + headline: "Нууц үгийг шинэчилэх " + passwords: + link: "Та нууц үгээ мартсан уу? " + send_instructions: "Та хэдхэн хормын дотор нууц үгээ шинэчилэх зааварчилгаа бүхий имэйл -ийг хүлээж авах болно. " + send_paranoid_instructions: "Хэрвээ та хэрэглэгчийн бүртгэлтэй бол, хэдхэн хормын дотор нууц үгээ шинэчилэх зааварчилгаа бүхий имэйл -ийг хүлээж авах болно. " + updated: "Таны нууц үг амжилттай өөрчлөгдлөө, одоо та нэвтэрч болно" + updated_not_active: "Таны нууц үг амжилттай өөрчлөгдлөө" + registrations: + destroyed: "Баяртай, таны хэрэглэгчийн бүртгэл амжилттай цуцлагдлаа. Бид таньтай дахин уулзана гэдэгт найдаж байна. " + inactive_signed_up: "Таны бүртгэл амжилттай хийгдлээ, гэвч бид таныг нэвтрүүлж чадахгүй. Шалтгаан нь: %{reason}" + link: "Бүртгүүлэх " + reasons: + inactive: 'Идэвхгүй ' + locked: 'Түгжигдсэн ' + unconfirmed: Баталгаажуулаагүй + signed_up: "Та амжилттай нэвтэрлээ. Баталгаажуулах имэйл илгээгдсэн байна." + updated: "Та хэрэглэгчийн бүртгэлээ амжилттай шинэчлэлээ. " + sessions: + inactive: "Таны хэрэглэгчийн бүртгэл хараахан идэвжээгүй байна" + invalid: "Цахим шуудангийн хаяг эсвэл нууц үг хүчин төгөлдөр биш байна. " + invalid_token: "Хүчин төгөлдөр бус нэвтрэлт бүртгэгдсэн байна " + link: "Нэвтрэх " + locked: "Таны хэрэглэгчийн бүртгэл түгжигдсэн байна" + new: + no_osm_account: "OpenStreetMap хэрэглэгчийн бүртгэл биш байна. " + osm_promo_text: "Wheelmap нь OpenStreetMap (OSM) -ийн geodata дээр суурилсан. OpenStreetMap' нь үнэгүй дэлхийн газарзүйн зураглал бөгөөд хүмүүсийн сайн дурын оролцоогоор бүтээгдсэн юм. Энэ нь Википедиа шиг ажилладаг гэсэн үг. Та OpenStreetMap -д хэрэглэгчийн бүртгэл үүсгэж нэвтрэн орсноор шинээр газар тэмдэглэх болон засварлах боломжтой болох юм. " + promo_text_thank_you: "Таны дэмжлэгт маш их баярлалаа!" + sign_in_with: "Нэвтрэх %{kind}" + sign_up_with_osm: "Бүртгүүлэх " + wheelmap_promo_text: "Та тэргэнцэрт хүртээмжтэй газруудын тухай мэдээлэлтэй болсноор тулгуур эрхтний хөгжлийн бэрхшээлтэй хүмүүст өдөр тутмын амьдралаа илүү сайнаар төлөвлөхөд нь туслах болно. Цаашлаад, энэ нь OpenStreetMap сайтыг илүү дэлгэрэнгүй мэдээллээр хангахад тус болох юм. " + signed_in: "Амжилттай нэвтэрлээ. " + signed_out: "Амжилттай гарлаа" + timeout: "Таны оролдлого хэтэрсэн байна, үргэлжлүүлэхийн тулд нэвтрэн орно уу. " + unauthenticated: "Та үргэлжлүүлхийн өмнө нэвтрэх эсвэл бүртгүүлэх шаардлагатай" + unconfirmed: "Та үргэлжлүүлхийн өмнө өөрийн хэрэглэгчийн бүртгэлийг баталгаажуулах хэрэгтэй" + sign_in: + form: + labels: + email: Цахим шуудан + password: Нууц үг + remember_me: "Нэвтэрсэн хэвээр үлдэх үү? " + submit: "Нэвтрэх" + headline: "Нэвтрэх" + sign_out: + headline: "Гарах" + sign_up: + email: + confirm_my_account: "Миний хэрэглэгчийн бүртгэлийг баталгаажуул " + please_confirm: "Та доорх холбоосоор нэвтэрч хэрэглэгчийн бүртгэлээ баталгаажуулна: " + welcome: "Тавтай морил %{email} !" + form: + labels: + email: 'Цахим хаяг ' + password: Нууц үг + password_confirmation: "Нууц үгийг давтах " + wants_newsletter: "Тийм, Wheelmap дээр хийгдэж байгаа хөгжүүлэлтүүдийг хадгал - гэхдээ сард ганц удаа ба түүнээс ихгүй байна." + submit: "Бүртгүүлэх " + headline: "Бүртгүүлэх " + unlocks: + link: "Та түгжээг тайлах зааварчилгааг хүлээж аваагүй юу?" + send_instructions: "Та өөрийн хэрэглэгчийн бүртгэлийн түгжээг тайлах зааварчилгаа бүхий и-мэйлийг хэдэн хормын дотор хүлээж авах болно." + send_paranoid_instructions: "Хэрвээ та хэрэглэгчийн бүртгэлтэй бол, та өөрийн хэрэглэгчийн бүртгэлийн түгжээг тайлах зааварчилгаа бүхий и-мэйлийг хэдэн хормын дотор хүлээж авах болно. " + unlocked: "Таны хэрэглэгчийн бүртгэлийн түгжээ амжилттай гарлаа. Та одоо нэвтэрсэн байна ." diff --git a/config/locales/mn/categories.yml b/config/locales/mn/categories.yml new file mode 100644 index 000000000..13ac3531d --- /dev/null +++ b/config/locales/mn/categories.yml @@ -0,0 +1,204 @@ +mn: + poi: + category: + accommodation: Байр, сууц + education: Боловсрол + food: Хоол, хүнс + government: 'Засгийн газар ' + health: Эрүүл мэнд + leisure: Чөлөөт цаг + misc: Нэмэлт зүйлс + money_post: "Банк / Шуудан" + public_transfer: "Нийтийн тээвэр" + shopping: Дэлгүүр + sport: Спорт + tourism: Аялал жуулчлал + unknown: 'Танигдаагүй ' + name: + accommodation: + beach_resort: "Далайн эргийн зочид буудал" + bed_and_breakfast: "Ор ба өглөөний цай" + camp_site: "Майхан" + caravan_site: "Чиргүүл " + chalet: Дүнзэн байшин + dormitory: Олон ортой унтлагын өрөө + guest_house: "Зочид буудаллах байшин " + hostel: Дэн буудал + hotel: Зочид буудал + motel: Гэр буудал + education: + college: Коллеж + driving_school: "Жолооны курс" + kindergarten: Цэцэрлэг + library: Номын сан + museum: Музей + school: Сургууль + university: Их сургууль + food: + bar: Баар + biergarten: Цэцэрлэгт хүрээлэн + cafe: Кафе + drinking_water: "Уух ус " + fast_food: "Түргэн хоол" + ice_cream: "Зайрмаг худалдаалах газар" + pub: Уушийн газар + restaurant: Зоогийн газар + government: + courthouse: Шүүхийн байр + embassy: 'Элчин ' + employment_agency: "Хөдөлмөр зуучлалын газар" + government: "Засгийн газрын агентлаг " + police: Цагдаа + public_building: "Олон нийтийн байгууламж " + townhall: Хотын захиргаа + health: + alternative: "Уламжлалт эмчилгээ" + dentist: Шүдний эмч + doctors: 'Эмч ' + hearing_aids: "Сонсголын туслах хэрэглэгдэхүүн худалдаалагч " + hospital: Эмнэлэг + medical_supply: "Эм ханган нийлүүлэгч " + occupational_therapist: "Хөдөлгөөн засалч " + pharmacy: Эмийн сан + physiotherapist: 'Физик эмчилгээний эмч ' + psychotherapist: 'Сэтгэлзүйч ' + social_facility: "Нийгмийн үйлчилгээний газар" + speech_therapist: "Яриа засалч " + veterinary: 'Амьтдын эмч ' + leisure: + arena: 'Төв цэнгэлдэх ' + brothel: 'Эмсийн хүрээлэн ' + casino: Казино + cinema: 'Кино театр ' + community_centre: "Олон нийтийн төв " + gallery: 'Үзэсгэлэн ' + massage: "Алжаал тайлах газар" + nightclub: Шөнийн цэнгээний газар + playground: Тоглоомын талбай + sauna: Саун + stripclub: Тайчигч клуб + tattoo: "Шивээсний дэлгүүр" + theatre: Театр + zoo: Амьтны хүрээлэн + misc: + association: Холбоо + company: "Хувийн хэвшил (Office)" + estate_agent: "Үл хөдлөх хөрөнгө зуучын газар" + insurance: Даатгал + lawyer: Хуульч + ngo: "Төрийн Бус Байгууллага" + place_of_worship: "Мөргөлийн газар" + political_party: "Улс төрийн намын байр" + toilets: Аруин цэврийн өрөө + money_post: + atm: АТМ + bank: Банк + bureau_de_change: "Валют арилжааны газар " + post_box: "Шуудангийн хайрцаг" + post_office: "Шуудан " + public_transfer: + aerodrome: Нисэх онгоцны буудал + bicycle_parking: "Дугуйн зогсоол" + bicycle_rental: "Дугуй түрээсийн газар" + boatyard: Усан онгоцны зогсоол + bus_station: "Автобусны буудал" + bus_stop: "Автобусны зогсоол" + cable_car: "Тралейбус" + car_rental: "Машин түрээсийн газар" + car_sharing: "Албан бус такси үйлчилгээ" + chair_lift: "Өргөгч сандал " + ferry: Сүйх тэрэг + ferry_terminal: "Сүйх тэрэгний зогсоол" + fuel: "Түлш түгээгүүрийн газар" + halt: Зогсоол + light_rail: "Гэрэлт зам " + parking: Машины зогсоол + parking_aisle: "Онгоцны буудлын зогсоол" + platform: Платформ + station: "Галт тэрэгний буудал" + subway_entrance: "Метроны нэвтрэх гарц " + terminal: "Нисэх онгоцны тавцан " + tram_stop: "Трамвайн зогсоол" + shopping: + alcohol: 'Архи худалдаалах цэг ' + antiques: 'Эртний эдлэлийн дэлгүүр ' + art: "Галлирей дэлгүүр" + bakery: 'Бэйкери ' + beauty: "Гоо сайхны салон " + beverages: 'Ундаа ' + bicycle: "Моторт дугуйн дэлгүүр" + books: Номын худалдаа + butcher: Мах худалдаалах цэг + car_repair: "Машин засварын газар" + car_shop: "Машин худалдааны газар" + chemist: 'Эмийн сан ' + clothes: Хувцас + computer: 'Компьютер ' + confectionery: "Чихрийн дэлгүүр" + convenience: Түргэн үйлчилгээний цэг + copyshop: "Канон, принтэр " + deli: 'Мухлаг ' + department_store: "Их дэлгүүр " + doityourself: "Өөрөө өөртөө үйлчилэх цэг" + dry_cleaning: "Хуурай хими цэвэрлэгээ" + electronics: 'Электрон бараа ' + erotic: "Секс хэрэгсэлийн дэлгүүр" + fabric: "Бөс даавууны дэлгүүр " + farm_shop: "Хөдөө аж ахуйн тоног төхөөрөмж худалдааны газар" + florist: 'Цэцгийн худалдаа ' + funeral_directors: "Оршуулгын газар " + furniture: 'Тавилгын худалдаа ' + garden_centre: "Цэцэрлэгт хүрээлэн " + gift: "Бэлэг дурсгалын дэлгүүр " + greengrocer: 'Жимс ногооны худалдаа ' + hairdresser: 'Үсчин ' + hardware: 'Компьютерийн сэлбэг худалдаа ' + interior_decoration: "Дотоод засал чимэглэлийн дэлгүүр " + jewelry: 'Үнэт эдлэлийн дэлгүүр ' + kiosk: Нийтийн хоолны газар + laundry: 'Хувцас цэвэрлэгээний үйлчилгээ ' + mall: "Худалдааны төв " + mobile_phone: "Гар утасны дэлгүүр " + music: "Дуу бичлэг худалдаалах дэлгүүр" + musical_instrument: "Хөгжмийн зэмсгийн дэлгүүр " + newsagent: "Мэдээний агентлаг " + optician: 'Хараазүйн эмч ' + organic: "Органик бүтээгдэхүүний дэлгүүр " + outdoor: "Аялал зугаалгын хэрэгсэл нийлүүлэгч " + pet: "Амьтны дэлгүүр " + photo: 'Зураг ' + second_hand: "Гар дамжсан худалдаа" + shoes: 'Гутал ' + sports: Спорт + stationery: 'Бичиг хэргийн дэлгүүр ' + supermarket: Супермаркет + tailor: 'Оёдолчин ' + tea: "Цай нийлүүлэгч" + tobacco: "Тамхины дэлгүүр" + toys: Тоглоом + travel_agency: "Аялалын агентлаг" + variety_store: "Хямдралтай худалдааны дэлгүүр" + video: "Видео түрээсийн газар" + sport: + pitch: "Спортын талбай " + sports_centre: "Спортын төв" + stadium: 'Стадион ' + swimming: 'Усан спорт ' + swimming_pool: "Усан сан " + tourism: + archaeological_site: "Археологийн бүс " + arts_centre: "Урлагын төв " + artwork: Урлагын бүтээл + attraction: Хүмүүсийн очих дуртай газар + battlefield: 'Дайны талбар ' + beach: Далайн эрэг + beacon: Гэрэлт цамхаг + castle: 'Ордон ' + cave_entrance: "Агуйн ам " + information: "Жуулчдын мэдээлэл" + memorial: Дурсгалт газар + theme_park: "Соёл амралтын цэцэрлэгт хүрээлэн" + tower: Цамхаг + viewpoint: "Алсыг харах цэг" + unknown: + unknown: Тодорхойгүй газар diff --git a/config/locales/mn/ember.yml b/config/locales/mn/ember.yml new file mode 100644 index 000000000..4487c6ef0 --- /dev/null +++ b/config/locales/mn/ember.yml @@ -0,0 +1,21 @@ +mn: + models: + category: + prompt: "Ангилалыг сонгох " + node_type: + prompt: "Төрлийг сонгох " + node: + info_edit_position: "Энэ байршил нь Wheelmap -д дээрх байдлаар харагдах болно. Хэрвээ буруу тэмдэглэгээ хийгдсэн бол та OpenStreetMap дээр өөрчлөлт хийж болно" + mail: + subject: "[Wheelmap] Асуудал нь %{headline}" + body: "(Зөвхөн Англи эсвэл Герман хэлээр бичнэ.)\n\nСайн байна уу Sozialhelden,\nбайршил алдаатай байна: %{url}\n\nАсуудал нь: " + actions: + send: Илгээх + save: Хадгалах + cancel: Цуцлах + next: 'Дараагийнх ' + errors: + models: + node: + website: + invalid: "Вэбсайт хаяг хүчин төгөлдөр биш байна " diff --git a/config/locales/mn/relaunch.yml b/config/locales/mn/relaunch.yml new file mode 100644 index 000000000..50d740359 --- /dev/null +++ b/config/locales/mn/relaunch.yml @@ -0,0 +1,191 @@ +mn: + activerecord: + attributes: + poi: + name: Нэр + type: Төрөл + address: Хаяг + website: Вэбсайт + phone: Утасны дугаар + note: Тэмдэглэл + address_street: Гудамж + address_housenumber: Гэрийн хаяг + address_postcode: Шуудангийн хаяг + address_city: Хот + community_support_form: + new: + form: + title: 'Асуудлыг мэдэгдэх ' + header_text_html: "Эхлээд та асуултынхаа хариултыг Түгээмэл Асуулт Хариулт хэсгээс хайна уу. Хэрвээ таны асуудлыг шийдэх шийдэл олдоогүй бол, та дараах асуултанд хариулна уу. " + questions: + a: Та юу хийсэн бэ? + b: Та юу болно хэмээн хүлээж байсан бэ? + c: Үүний оронд юу болсон бэ? + note: 'Wheelmap бол ашгийн бус байгууллагын нээлттэй эх үүсвэртэй төсөл бөгөөд аппликэйшн хөгжүүлэгчдэд хязгаарлагдмал нөөцтэй болно. ' + describe: Англи эсвэл Герман хэлээр бичнэ үү. + flash_after_submit: 'Бидэнтэй холбогдсонд баярлалаа. Бид таньтай удахгүй эргэн холбогдох болно. ' + submit_button: 'Хүргүүлэх ' + faq: + answers: + 0: Та өөрийн тэмдэглэсэн газраа өөрөө өөрчилөх боломжтой. Зөвхөн сонголтоо зөв хийж хадгална уу ! + 1: Та хэрэглэгчийн эрхээр нэвтрэн орж өөрийн тэмтэглэсэн газар болон түүнтэй холбоотой бүх нарийвчилсан өөрчлөлтүүдийг хийх боломжтой. "Засварлах" гэсэн цэсийг сонгон нэмэлт мэдээлэл болон засварлах мэдээллээ оруулна уу. + 2: 'Та санал сэтгэгдлийн хэсэгт нэмэлт мэдээлэл (жишээ нь: "Энэ газар зөөврийн налуу замтай") оруулж болно. "Засварлах" болон "Сэтгэгдэл нэмэх" хэсгийг сонгоно уу. ' + headline: Энэ газартай холбоотой ямар нэгэн асуудал байна уу? + questions: + 0: 'Тэмдэгэгээ буруу байна. ' + 1: Энэ газрын талаарх дэлгэрэнгүй мэдээлэл буруу эсвэл дутуу байна. + 2: 'Надад энэ газрын талаар дэлгэрэнгүй мэдээлэл байна. ' + header: + navigation: + choose_language: Хэлээ сонгоно уу. + contact: 'Холбоо барих ' + map: Газарзүйн зураглал + travelguide: 'Аялалын хөтөч ' + projects: 'Элслээ ' + faq: Түгээмэл Асуулт Хариулт + report_problem: 'Асуудлыг мэдэгдэх ' + toolbar: + categories: Ангилал + meta: + description: Wheelmap.org бол тэргэнцэрт хүртээмжтэй газруудыг хайх, олох болон тэмдэглэх цахим газарзүйн зураглал юм. Бидэнтэй нэгдэж уушийн газар, зоогийн газар, кино театр болон худалдааны төв гэх мэт өөрийн үйлчлүүлж буй олон нийтийн газруудыг тэмдэглээрэй! + title: Wheelmap.org + home: + index: + overlay: + button: Эхэлцгээе! + categories: Ангилалаар газруудыг шүүж харуулах + filter: Тэргэнцэрт хүртээмжтэй газруудыг шүүж харуулах + headline: 'Дэлхий даяар хүн бүр чөлөөтэй ашиглаж болох Wheelmap.org сайт дээр тэргэнцэрт хүртээмжтэй газруудыг хайж ол бас тэмдэглэ. Энэ үнэхээр амархан. ' + lookup: Тусгай газруудыг хайх + secondary_headline: 'Олон нийтийн тэргэнцэрт хүртээмжтэй газруудыг тэмдэглэхэд бид замын хөдөлгөөний гэрлэн дохионы системийг ашигладаг. ' + embed_link: Wheelmap.org дээр харуул + zoom_alert: 'Илүү олон газрыг харахын тулд томруулж хар ' + nodes: + new: + form: + title: 'Газар нэмэх ' + legend: 'Газрын байршил ' + location: Газрын байршилийг газарзүйн зураглал дээр харуул! + section: + name_category: + name: 'Газрын төрөл болон нэр ' + title: "Тэмдэглэсэн газрынхаа анхдагч мэдээллийг бидэнд өгнө үү: " + address: + name: Хаяг + title: Газар хаана байрладаг вэ? + help: 'Та газарзүйн зураглал дээр тэмдэглэсэн газрынхаа тэмдэглэгчийг зөв байршилд шилжүүлэх боломжтой. ' + similar_nodes: + name: Адилхан газар + title: Бид ойролцоо ижил төстэй газар оллоо. Энэ тэргээрийн нэг хэсэг нь үү? + go_edit: Энэ газрыг үргэлжлүүл + go_new: Энэ дээрх газруудын нэг биш байна ... + empty: Ижил газрууд олдсонгүй. + accessibility: + name: Тэргэнцэрт хүртээмжтэй + title: Тэргэнцэрт хүртээмжтэй гэсэн мэдээлэл + contact: + name: 'Холбоо барих ' + title: Бусад холбоо барих мэдээлэл + overview: + title: Эдгээр мэдээллүүд нь зөв үү? + node_data: + address: 'Хаяг:' + contact_details: 'Холбоо барих мэдээлэл:' + node_edit: + details: Нарийвчилсан мэдээлэл + edit: Засварлах + node_map: + map: 'Газарзүйн зураглал:' + node_note: + comment: 'Сэтгэгдэл:' + node_photos: + add: Нэмэх + photos_of_this_place: 'Энэ газрын зурагнууд:' + upload: 'Хуулах ' + alert: 'Мэдэгдэл: Орох гарах гарцын зураг нь дараах зүйлсийг маш тод харуулсан байх ёстой. Орох гарах гарц шаттай эсэх? Хаалга хэр өргөн эсэх? Босгоны өндөр ойролцоогоор? Зураг нь JPG эсвэл PNG хувилбартай байх ёстой. Мөн 10 MB хэмжээнээс хэтрэхгүй байх хэрэгтэй. ' + node_similar: + similar: 'Адилхан газрууд %{name}' + node_status: + accessible_toilet: 'Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө:' + premium: '%{name} Өгүүлэмж: Энэ газар бол ' + wheelchair_accessibility: 'Тэргэнцэрт хүртээмжтэй: ' + node_streetview: + streetview: 'Гудамжны харагдах байдал:' + show: + header: + meta: + description: 'Хэрвээ энэ газар нь тэргэнцэрт хүртээмжтэй бол Wheelmap.org сайт дээрээс олдох болно. Эсвэл дэлгэрэнгүй мэдээлэл болон зурагнуудыг нэмнэ үү. ' + title: 'Энэ газар нь Wheelmap.org сайт дээр байна: %{name}' + share: + email: 'Цахим хаяг ' + facebook: Facebook + text: 'Энэ газар нь Wheelmap.org сайт дээр олдлоо: %{name}' + twitter: Twitter + search: + index: + no-results: + headline: Уучлаарай, энэ нэршлээр ямар нэгэн газар олдсонгүй "%{query}" + hint: + example: 'Жишээ нь: Лондон, Нэгдсэн Улс ' + info: 'Манай хайлтын систем нь нэр эсвэл хаягын мэдээлэл оруулсан нөхцөлд ажиллах болно. Мөн нэр болон хаягаар зэрэг хайлт хийж болно. жишээ нь: хот болон гудамжны нэр. Харин дараах байдлаар хайлт хийвэл ажиллахгүй болохыг анхаарна уу! Газрын төрлөөр, жишээ нь: зоогийн газар, кино театр гэх мэт ' + work_in_progress: 'Бид хайлтын системээ илүү хялбар ирээдүйн шаардлагад нийцсэн болгох тал дээр шаргуу ажиллаж байна. ' + try_this: + address: Нарийвчилсан хаягжилтийн мэдээллийг дэлгэрэнгүй өгнө үү. + intro: 'Үүнийг туршаад үзнэ үү: ' + spell_check: 'Та үсгийн алдаагаа шалгана уу. ' + results: + ticker: + one: '%{count}үр дүн:' + other: '%{count}үр дүнгүүд: ' + timeout: + headline: 'Уучлаарай, зарим нэгэн зүйлс буруу байна ' + info: 'Манай хайлтын үйлчилгээ түр хугацаагаар ажиллахгүй болохыг анхаарна уу. ' + repeat_search: Дахин хайлт хийнэ үү + users: + profile: + newsletter: + title: 'Мэдээллийн самбар ' + text: 'Wheelmap мэдээ мэдээлэлтэй хамт байгаарай. Санаа зоволтгүй, бид танд ямар нэгэн хохирол учруулахгүй. Хамгийн ихдээ сардаа ганц удаа биднээс мэдээ мэдээлэл хүлээж авах болно. ' + label: Тийм, wheelmap - ийн тухайд намайг шинэчилнэ үү. + show: + title: 'Ерөнхий байдлаар харах ' + text_html: "Сайн байна уу,
\n Wheelmap.org! –т (эргэн) тавтай морил! Бид таньтай хамтран ажиллах болсондоо баяртай байна! Та бидний Блог эсвэл Тогтмол асуулт хариулт хэсгээр нэвтэрч болно. Хэрвээ та Wheelmap.org сайтын талаарү ихийг мэдэхийг, эсвэл төслийн талаар илүү ихийг сурахыг хүсвэл бид тань руу Wheelmap.org! сайтад хэрхэн ажиллах талаар зааварчилгаа илгээх болно.
\n Та бидэнтэй холбоотой байж биднийг олон нийтийн сүлжээ болох Facebook болон Twitter -т дагаснаар бидний гаргадаг сар тутмын мэдээ мэдээллүүдийг хүлээж авах болно. Бид таньтай холбоо тогтоон, таны санаа бодлыг сонсохдоо таатай байх болно.
\n Та одоо зураглалаа тааваараа хийж болно!
\n Газарзүйн зураглалын баг " + greeting: + anonymously: 'Сайн байна уу ' + personalized: Сайн байна уу %{name} + overview: + text: 'Танд бий ' + pois_marked: + one: 'тэмдэглэгдсэн %{count}газрууд ' + other: 'тэмдэглэгдсэн %{count}газрууд ' + pois_added: + one: 'нэмэгдсэн %{count}газрууд ' + other: 'нэмэгдсэн %{count} газрууд ' + pois_edited: + one: 'засварлагдсан %{count}газрууд ' + other: 'засварлагдсан %{count}газрууд ' + photos_uploaded: + one: 'татаж оруулсан %{count} зурагнууд ' + other: 'татаж оруулсан %{count} зурагнууд ' + photos: + title: Зураг + empty: Та одоогоор ямар нэгэн зураг оруулаагүй байна. + edit: + title: Хувийн хэрэг + legends: + user_data: Таны бүртгэлийн тухай мэдээлэл + widget: + title: 'Виджет ' + height: Өндрийн хэмжээ + width: 'Өргөний хэмжээ ' + center: 'Газрын зургийн талбар ' + categories: Ангилалаар шүүж харах + providers: 'Нийлүүлэгч ' + empty_provider: 'Нийлүүлэгчийг сонгох ' + empty_center: Газрын зургийн төвөөс эхлэн хайлт хийх ... + legends: + settings: Тохиргоо + preview: Урьдчилан харах + embed: Суулгасан код + embed_explanation: 'Та өөрийн харахыг хүссэн газрыг байршлийн дагуу буюу уртраг (lat), өргөрөг (lon) болон томруулж, жижигрүүлэх (zoom) байдлаар газарзүйн нарийвчилсан (виджет) тохиргоо хийж харах боломжтой. ' + general: 'Та өөрийн Wheelmap виджетийг бий болгон түүнийгээ өөрийн вэбсайт болон блогтоо оруулж болно. ' diff --git a/config/locales/mn/wheelmap.yml b/config/locales/mn/wheelmap.yml new file mode 100644 index 000000000..b6dc6fe63 --- /dev/null +++ b/config/locales/mn/wheelmap.yml @@ -0,0 +1,381 @@ +mn: + application: + require_no_user: + notice: "Та нэвтэрсэн байна..." + require_user: + notice: "Та энэ хуудсыг харахын тулд заавал нэвтэрсэн байх ёстой." + breadcrumbs: + node: + create: "Шинэ газар нэмэх " + edit: "Газрыг засварлах" + root: Тэргэнцэртэй иргэд зорчих газрын зураглал + common: + close: Ойрхон + skip: Алгасах + errors: + dynamic_format: "%{message}" + format: "%{attribute} %{message}" + messages: + accepted: "Хүлээн зөвшөөрсөн байх ёстой" + already_confirmed: "Баталгаажсан байна" + blank: " Бөглөсөн байх ёстой " + confirmation: "Өгөгдөл тохирсонгүй " + empty: " Бөглөсөн байх ёстой " + equal_to: "Таарч байх ёстой %{count}" + even: "Тоо байх ёстой " + exclusion: "Нөөцлөгдсөн " + expired: "Хугацаа дууссан байна, шинээр хүсэлтээ илгээнэ үү " + greater_than: "Их байх ёстой %{count}" + greater_than_or_equal_to: "Тэнцүү эсвэл их байх ёстой %{count}" + inclusion: "Хүчин төгөлдөр бус үнэлэмж байна" + invalid: "Хүчин төгөлдөр бус байна" + less_than: "Бага байх ёстой %{count}" + less_than_or_equal_to: "Тэнцүү эсвэл бага байх ёстой %{count}" + not_a_number: "Тоон утга биш байна" + not_an_integer: "Бүхэл тоо байх ёстой " + not_found: "Илэрцгүй байна" + not_locked: "Түгжигдээгүй байна" + not_saved: + one: "хадгалахыг хориглоно %{resource}:" + other: "%{count} хадгалахыг хориглоно %{resource}:" + odd: "Сондгой тоо байх ёстой " + taken: "Өгөгдсөн байна " + too_long: "Энэ хэтэрхий урт байна (%{count} үүнээс хэтрүүлэхгүй байх)" + too_short: "Энэ хэтэрхий богино байна (%{count} үүнээс багадуулахгүй байх)" + wrong_length: "Уртын хэмжээ буруу байна (%{count} өгөгдөл байх хэрэгтэй)" + template: + body: "Дараах талбаруудад асуудал гарсан байна" + header: + one: "1 адлаа нь %{model} хадгалахад саад болж байна" + other: "%{count} алдаанууд нь %{model} үүнийг хадгалахад саад болж байна " + flash: + actions: + create: + notice: "%{resource_name} амжилттай үүсгэлээ" + destroy: + alert: "%{resource_name} арилгаж чадахгүй байна" + notice: "%{resource_name} амжилттай устгагдлаа" + update: + notice: "%{resource_name} амжилттай шинэчлэгдлээ" + photos: + destroy: + notice: "Зураг амжилттай устгагдсан байна" + form: + show_fully_accessible_places: "Тэргэнцэрт хүртээмжтэй" + show_limited_accessible_places: "Хэсэгчилсэн газрууд тэргэнцэрт хүртээмжтэй" + show_places_without_status: "Таниулаагүй өгөгдөл байна " + show_unaccessible_places: "Тэргэнцэрт хүртээмжтэй бус " + formtastic: + hints: + email: "Бид таны хаягийг итгэлтэйгээр байршуулах хэрэгтэй байна. Бид тань руу ямар нэгэн вирус илгээхгүй гэдгийг амлаж байна " + lat: "Газарзүйн зураглал дээр байрлах тэмдэглэгчийг зөв байршил руу шилжүүлэх " + osm_username: "Та хараахан гишүүнээр элсээгүй байна уу? Та яг одоо OpenStreetMap бүртгэл үүсгэнэ үү" + password: "(Хэрвээ та өөрчлөхийг хүсэхгүй байгаа бол энэхүү зайг хоосон үлдээнэ үү)" + phone: "Жишээ нь: +49 30 12345678" + website: "Жишээ нь: http://www.example.com" + labels: + category: "Ангилал:" + centralkey: "Гол утга:" + city: "Хот:" + create: "Газар шинээр нээх " + email: 'Цахим хаяг ' + finish: Дуусгах + housenumber: "Үгүй:" + lat: Өндөрийн хэмжээ + lon: Уртын хэмжээ + name: "Нэр:" + osm_password: "OpenStreetMap нууц үг" + osm_username: "OpenStreetMap хэрэглэгчийн нэр " + password: Нууц үг + password_confirmation: "Нууц үгийг давтах " + phone: "Харилцах утасны дугаар:" + postcode: "Шуудангийн хайрцаг:" + privacy_policy: "Би гэрээний хувийн мэдээлэл нууцлах 1 болон 2-р зүйлийг зөвшөөрч байна " + reset: 'Дахин шинэчилэх ' + save: Хадгалах + street: "Гудамж: " + terms: "Би хэрэглэгчийн мөрдөх гэрээний нөхцлийг хүлээн зөвшөөрч байна" + type: "Төрөл:" + website: "Цахим хуудас:" + wheelchair: "Тэргэнцэрт хүртээмжтэй юу?" + wheelchair_description: "Хүртээмжийн талаарх сэтгэгдэл:" + wheelchair_toilet: "Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө:" + titles: + basic: "Үндсэн мэдээлэл" + optional: "Илүү их мэдээлэл (бүх газар сонголтоор)" + global: + form_validation_error: "Дараах алдаануудыг анхаарна уу" + header: + meta: + homepage: "Нүүр хуудас " + keywords: "Тэргэнцэрт хүртээмжтэй газруудыг олох хайлтын тэмдэглэгээ" + search: Хайлт + navigation: + blog: Мэдээ + feedback: 'Хариу ' + home: 'Эхлэх ' + how_to_add_a_place: "Би хэрхэн газар нэмэх вэ?" + imprint: 'Тэмдэглэх ' + logged_in_as: "Дараах байдлаар нэвтэрсэн байна:" + login: "Нэвтрэх" + logout: "Гарах" + newsletter: 'Мэдээллийн самбар ' + press: Хэвлэл + profile: Хувийн хэрэг + suggestions: 'Санал хүсэлтүүд ' + what_is_barrier_free: "\"Тэргэнцэрт хүртээмжтэй\" гэдэг нь юу гэсэн утгатай вэ?" + what_is_wheelmap: "Wheelmap гэж юу вэ?" + searchbar: + add_place: "Өөр газар нэмэх" + find: Хайх + placeholder: "Тухайн газрыг хайх" + title_add_place: "Яг одоо энэ байршилд шинэ газар нэмэх!" + tagline: "Wheelmap лого " + title: "Тэргэнцэр хүртээмжтэй газруудыг олох " + helpers: + select: + prompt: "Сонголтоо хийнэ үү" + submit: + create: "үүсгэх %{model}" + submit: "хадгалах %{model}" + update: "шинэчилэх %{model}" + home: + index: + filter: + category: "Ангилалаа сонгоно уу" + deselect_all: "Бүгдийг дахин сонго" + select_all: "Бүгдийг сонго" + wheelchair: "Тэргэнцэрт хүртээмжтэй юу?" + ie: + action: + ignore: 'Хэрэгсэхгүй болгох ' + upgrade: "Хөтөч шинэчлэл" + warning: + headline: "Биднийг өршөөнө үү!" + message: "Та интернэт хөтчийг ашиглаж байна. Wheelmap нь стандартад нийцсэн хөтчүүдийг ашиглахыг шаарддаг. Firefox, Chrome, Safari эсвэл Opera зэрэг хөтчүүдийг ашиглана уу. " + link: + node: + create: "Шинэ газар нэмэх " + popup: + form: + limited: "Тэргэнцэрт хэсэгчилсэн хүртээмжтэй " + 'no': "Тэргэнцэрт хүртээмжтэй бус" + save: 'Шинэчилэх ' + unknown: "Таниулаагүй өгөгдөл байна" + 'yes': "Тэргэнцэрт хүртээмжтэй " + help: "Тэргэнцэрт хүртээмжтэй юу? (Тусламж)" + more: "цааш ... " + how?: Хэрхэн? + landing_pages: + index: + wheelchair: + limit: + headline: "Тэргэнцэрт хэсэгчилсэн хүртээмжтэй бүх %{type} %{city} -д (%{count}) " + 'no': + headline: "Тэргэнцэрт хүртээмжгүй бүх %{type} %{city} -д (%{count}) " + unknown: + headline: "Бүх %{type}дараах %{city}хотуудад тэргэнцэрт хүртээмжтэй эсэх нь тодорхой бус (%{count}) " + 'yes': + headline: "Тэргэнцэрт хүртээмжтэй бүх %{type} нь %{city} -д (%{count}) " + layouts: + application: + banner: + alt: "Sozialhelden.de төсөл нь" + node: + address: + city: "%{city}%{postcode}" + street: "%{housenumber}%{street}" + tags: + phone: "Утасны дугаар:" + website: "Цахим хуудас: " + nodes: + create: + flash: + not_successfull: "Уучлаарай, таны өгөгдөл буруу эсвэл бүрэн биш байна" + successfull: "Баярлалаа, таны хүсэлт амжилттай хадгалагдаж онлайн хэлбэрээр байршилаа." + edit: + header: + title: "Газарт засвар хийх: %{node} wheelmap.org" + link: + large_map: "« Цуцлах" + errors: + default: "Уучлаарай, ямар нэгэн зүйл буруу байна. Бид энэ асуудлын талаар мэдэгдсэн болно." + not_authorized: "Уучлаарай, нэвтрэлт амжилтгүй боллоо" + not_available: "Уучлаарай, энэ хуудас түр хугацаагаар идэвхгүй байна." + not_existent: "Уучлаарай, энэ газар ашиглалтнаас гарсан байна." + not_found: "Уучлаарай, хуудас олдсонгүй." + param_missing: "Хайлтын нөхцлийг сайжруулна уу " + flash: + authorize_wheelmap: " Мэдээлэлдээ өөрчлөлт оруулахад тань OpenStreetMap хэрэглэгчийн бүртгэл хэрэгтэй " + new: + header: + title: "Шинэ газар | wheelmap.org" + link: + large_map: "« Цуцлах " + node: + link: + claim: "Та энд ажилладаг уу?" + edit_node: "Газрыг засварлах" + report_bug: "Асуудлыг мэдэгдэх " + show: + header: + title: "Газар: %{node}Wheelmap.org " + link: + back: Буцах + large_map: Томруулах + listing: "Бүх газар дараах төрлөөр '%{type}' %{city}-д" + upload: "Зураг хуулах " + more_data_from: "Энд тухайн газрын талаар илүү мэдээлэл байгаа ба дараах байдлаар баталгаажсан болно:" + show-in-osm: OpenStreetMap + update: + flash: + not_successfull: "Уучлаарай, таны өгөгдөл буруу эсвэл бүрэн биш байна " + successfull: "Баярлалаа, таны хүсэлт амжилттай хадгалагдаж онлайн хэлбэрээр байршилаа. " + update_wheelchair: + successfull: "Төрөл нь \"%{name}\" байсан бөгөөд \"%{status}\" болж өөрчлөгдөж онлайн хэлбэрт шилжлээ. " + number: + currency: + format: + delimiter: ", " + format: "%u%n" + separator: "." + unit: $ + format: + delimiter: ", " + separator: ". " + human: + decimal_units: + format: "%n%u" + units: + billion: 'Тэрбум ' + million: Сая + quadrillion: Квадрилион + thousand: Мянга + trillion: Их наяд + storage_units: + format: "%n%u " + units: + byte: + one: 'Byte ' + other: Bytes + gb: GB + kb: KB + mb: MB + tb: TB + oauth: + application: + connect: + headline: "Wheelmap.org хуудсанд шинээр газар нэмэх болон тохируулга хийхээсээ өмнө та OpenStreetMap хэрэглэгчийн эрхээрээ нэвтрэн орох хэрэгтэй. " + callback: + notice: "Таны Wheelmap хэрэглэгчийн эрх OpenStreetMap - тай холбогдсон байна %{user}." + or: 'эсвэл ' + place: + one: "%{count} газрууд" + other: "%{count} газрууд " + profile: + edit: + application: + oauth: + connected: "Төлөв: холбогдсон" + grant: "Холбогдоно уу " + not_connected: "Төлөв: Холбогдоогүй " + revoke: 'Салгах ' + headline: "Профайл тохиргоо хийх " + search: + index: + search: + for: "Хайлт хийж байна \"%{q}\"" + not_found: "Хайсан газар олдсонгүй!" + splash: + countline: "%{count} газрууд тэмдэглэгдсэн байна. " + headline: "Хүн бүр тэргэнцэрт хүртээмжтэй газруудыг нэмэх боломжтой!" + start: Эхлэх + step1: "Өөрийн мэдэх газраа сонгоно уу" + step2: "Тэмдэглээд дараа нь хадгалах гэсэн товчлуурыг дарна уу" + step3: "Энэ хангалттай! Бүртгүүлэх шаардлагагүй " + what_is_wheelmap: "Wheelmap гэж юу вэ? " + statistics: Үзүүлэлтүүд + support: + array: + last_word_connector: "мөн" + sentence_connector: бас + two_words_connector: "түүнчлэн " + words_connector: ", " + select: + prompt: "Сонголтоо хийнэ үү" + time: + am: am + formats: + default: "%a,%d%b %Y %H:%M:%S %z " + long: "%B %d, %Y %H:%M " + short: "%d%b %H:%M " + pm: pm + toiletstatus: + 'no': "Тэргэнцэрт хүртээмжгүй ариун цэврийн өрөө" + unknown: "Ариун цэврийн өрөөний төлөв мэдэгдэхгүй байна" + 'yes': "Тэргэнцэрт хүртээмжтэй ариун цэврийн өрөө " + what_is: + 'no': "Хаалганы дотор өргөн хамгийн багадаа 90см (35инч), шалны цэвэр хэмжээ хамгийн багадаа 150 x 150 см (59 x 59инч), суултуур болон тэргэнцэрийн өндрийн хэмжээ адил түвшинд байх, эвхэгддэг хашлагууд болон гар бариултай буюу хүртээмжтэй ванн " + 'yes': "Хаалганы дотор өргөн хамгийн багадаа 90см (35инч), шалны цэвэр хэмжээ хамгийн багадаа 150 x 150 см (59 x 59инч), суултуур болон тэргэнцэрийн өндрийн хэмжээ адил түвшинд байх, эвхэгддэг хашлагууд болон гар бариултай буюу хүртээмжтэй ванн" + unknown: "Ариун цэврийн өрөөний төлөвийг тогтооход туслана уу!" + user_sessions: + create: + activation: + notice: "Таны бүртгэл идэвхижлээ!" + error: + notice: "Имэйл хаяг болон нууц үг таарахгүй байна." + notice: "Та нэвтэрсэн байна!" + destroy: + notice: "Баяртай, удахгүй эргэн уулзъя! " + new: + email: "Имэйл хаяг" + login: "Нэвтрэх " + login_with_twitter: "Twitter хаягаар нэвтрэх " + password: 'Нууц үг ' + remember_me: "Нэвтэрсэн хэвээр байна" + users: + after_signup_edit: + welcome: + headline: "Та бараг хүрлээ! Одоо та Wheelmap хэрэглэгчийн бүртгэлээ дуусгана уу:" + set_password_for_mobile: "Та OpenStreetMap -д амжилттай бүртгэгдлээ. Та Wheelmap-д өөрийн мэйл хаягийг бүртггүүлснээр бид таны үйл ажиллагааг цаг алдалгүй мэдэгдэж байх болно. (жишээ нь: таны тэмдэглэсэн газрын тоо). Мөн та энэ мэдээллийг өөрийн \"Профайл\" дээрээ хүлээн авах боломжой. " + text: "Бид таньтай хэрхэн холбоотой байх вэ? Та энэ мэдээллийг дараа нь өөрийн Профайл дээрээ өөрчлөх боломжтой." + edit: + headline: + your_images: "Таны байршуулсан зурагнууд" + wheelchairstatus: + limited: "Хэсэгчилсэн газрууд тэргэнцэрт хүртээмжтэй" + 'no': "Тэргэнцэрт хүртээмжтэй бус " + unknown: "Таниулаагүй өгөгдөл байна " + 'yes': "Тэргэнцэрт хүртээмжтэй" + wheelmap: + footer: + a_project_of: "Төслөөр " + based_on: "Суурилсан " + become_a_supporter: "Дэмжигч болох " + main_supporter: "Үндсэн дэмжигч " + itunes: + alt: "AppStore Logo" + title: "IPhone App яг одоо татаж авах " + logo: + alt: "Wheelmap Logo - тэргэнцэрт хүртээмжтэй газруудыг хайх " + title: "Wheelmap - тэргэнцэрт хүртээмжтэй газруудыг хайх" + what_is: + fully_accessible: "Нэвтрэх орц, гарц гишгүүргүй; бүх өрөө гишгүүргүй" + limited_accessible: "Нэвтрэх орц, гарц хамгийн ихдээ ганц шаттай. Өндөр нь 7см (3инч), ихэнх өрөөнүүд гишгүүргүй " + not_accessible: "Нэвтрэх орц, гарц гишгүүртэй ба цөөн хэдэн гишгүүртэй, өрөөнүүд хүртээмжтэй бус." + unknown_accessible: "Газар тэмдэглэхэд туслах! " + will_paginate: + next_label: "Дараа → " + page_entries_info: + multi_page: "Дэлгэцэнд %{count}-н %{model}-г %{from} - %{to}хоорондох байдлаар харуулж байна" + multi_page_html: "Дэлгэцэнд %{model}-г %{count}-н байдлаар%{from} - %{to} хооронд харуулж байна " + single_page: + one: "Дэлгэцэнд 1 %{model} харуулж байна " + other: "Бүх %{count} %{model} дэлгэцэнд харуулж байна" + zero: "%{model} олдсонгүй " + single_page_html: + one: "Дэлгэцэнд 1 %{model} харуулж байна " + other: "Дэлгэцэнд харуулж байна all  %{count}%{model}" + zero: "%{model} олдсонгүй" + page_gap: "… " + previous_label: "← Previous " diff --git a/public/javascripts/i18n.js b/public/javascripts/i18n.js index 9a97af0ef..b6f14687d 100644 --- a/public/javascripts/i18n.js +++ b/public/javascripts/i18n.js @@ -12,19 +12,23 @@ // See tests for specific formatting like numbers and dates. // -;(function(factory) { - if (typeof module !== 'undefined' && module.exports) { - // Node/CommonJS - module.exports = factory(this); - } else if (typeof define === 'function' && define.amd) { - // AMD - var global=this; - define('i18n', function(){ return factory(global);}); +// Using UMD pattern from +// https://github.com/umdjs/umd#regular-module +// `returnExports.js` version +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define("i18n", function(){ return factory(root);}); + } else if (typeof module === 'object' && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(root); } else { - // Browser globals - this.I18n = factory(this); + // Browser globals (root is window) + root.I18n = factory(root); } -}(function(global) { +}(this, function(global) { "use strict"; // Use previously defined object if exists in current scope @@ -48,16 +52,38 @@ // Borrowed from Underscore.js var isObject = function(obj) { var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; + return type === 'function' || type === 'object' + }; + + var isFunction = function(func) { + var type = typeof func; + return type === 'function' + }; + + // Check if value is different than undefined and null; + var isSet = function(value) { + return typeof(value) !== 'undefined' && value !== null; }; // Is a given value an array? // Borrowed from Underscore.js - var isArray = function(obj) { + var isArray = function(val) { if (Array.isArray) { - return Array.isArray(obj); + return Array.isArray(val); }; - return Object.prototype.toString.call(obj) === '[object Array]'; + return Object.prototype.toString.call(val) === '[object Array]'; + }; + + var isString = function(val) { + return typeof value == 'string' || Object.prototype.toString.call(val) === '[object String]'; + }; + + var isNumber = function(val) { + return typeof val == 'number' || Object.prototype.toString.call(val) === '[object Number]'; + }; + + var isBoolean = function(val) { + return val === true || val === false; }; var decimalAdjust = function(type, value, exp) { @@ -79,6 +105,28 @@ return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); } + var lazyEvaluate = function(message, scope) { + if (isFunction(message)) { + return message(scope); + } else { + return message; + } + } + + var merge = function (dest, obj) { + var key, value; + for (key in obj) if (obj.hasOwnProperty(key)) { + value = obj[key]; + if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value)) { + dest[key] = value; + } else { + if (dest[key] == null) dest[key] = {}; + merge(dest[key], value); + } + } + return dest; + }; + // Set default days/months translations. var DATE = { day_names: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] @@ -143,54 +191,21 @@ , missingTranslationPrefix: '' }; + // Set default locale. This locale will be used when fallback is enabled and + // the translation doesn't exist in a particular locale. I18n.reset = function() { - // Set default locale. This locale will be used when fallback is enabled and - // the translation doesn't exist in a particular locale. - this.defaultLocale = DEFAULT_OPTIONS.defaultLocale; - - // Set the current locale to `en`. - this.locale = DEFAULT_OPTIONS.locale; - - // Set the translation key separator. - this.defaultSeparator = DEFAULT_OPTIONS.defaultSeparator; - - // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`. - this.placeholder = DEFAULT_OPTIONS.placeholder; - - // Set if engine should fallback to the default locale when a translation - // is missing. - this.fallbacks = DEFAULT_OPTIONS.fallbacks; - - // Set the default translation object. - this.translations = DEFAULT_OPTIONS.translations; - - // Set the default missing behaviour - this.missingBehaviour = DEFAULT_OPTIONS.missingBehaviour; - - // Set the default missing string prefix for guess behaviour - this.missingTranslationPrefix = DEFAULT_OPTIONS.missingTranslationPrefix; - + var key; + for (key in DEFAULT_OPTIONS) { + this[key] = DEFAULT_OPTIONS[key]; + } }; // Much like `reset`, but only assign options if not already assigned I18n.initializeOptions = function() { - if (typeof(this.defaultLocale) === "undefined" && this.defaultLocale !== null) - this.defaultLocale = DEFAULT_OPTIONS.defaultLocale; - - if (typeof(this.locale) === "undefined" && this.locale !== null) - this.locale = DEFAULT_OPTIONS.locale; - - if (typeof(this.defaultSeparator) === "undefined" && this.defaultSeparator !== null) - this.defaultSeparator = DEFAULT_OPTIONS.defaultSeparator; - - if (typeof(this.placeholder) === "undefined" && this.placeholder !== null) - this.placeholder = DEFAULT_OPTIONS.placeholder; - - if (typeof(this.fallbacks) === "undefined" && this.fallbacks !== null) - this.fallbacks = DEFAULT_OPTIONS.fallbacks; - - if (typeof(this.translations) === "undefined" && this.translations !== null) - this.translations = DEFAULT_OPTIONS.translations; + var key; + for (key in DEFAULT_OPTIONS) if (!isSet(this[key])) { + this[key] = DEFAULT_OPTIONS[key]; + } }; I18n.initializeOptions(); @@ -216,7 +231,7 @@ I18n.locales.get = function(locale) { var result = this[locale] || this[I18n.locale] || this["default"]; - if (typeof(result) === "function") { + if (isFunction(result)) { result = result(locale); } @@ -231,8 +246,6 @@ I18n.locales["default"] = function(locale) { var locales = [] , list = [] - , countryCode - , count ; // Handle the inline locale option that can be provided to @@ -251,19 +264,85 @@ locales.push(I18n.defaultLocale); } + // Locale code format 1: + // According to RFC4646 (http://www.ietf.org/rfc/rfc4646.txt) + // language codes for Traditional Chinese should be `zh-Hant` + // + // But due to backward compatibility + // We use older version of IETF language tag + // @see http://www.w3.org/TR/html401/struct/dirlang.html + // @see http://en.wikipedia.org/wiki/IETF_language_tag + // + // Format: `language-code = primary-code ( "-" subcode )*` + // + // primary-code uses ISO639-1 + // @see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + // @see http://www.iso.org/iso/home/standards/language_codes.htm + // + // subcode uses ISO 3166-1 alpha-2 + // @see http://en.wikipedia.org/wiki/ISO_3166 + // @see http://www.iso.org/iso/country_codes.htm + // + // @note + // subcode can be in upper case or lower case + // defining it in upper case is a convention only + + + // Locale code format 2: + // Format: `code = primary-code ( "-" region-code )*` + // primary-code uses ISO 639-1 + // script-code uses ISO 15924 + // region-code uses ISO 3166-1 alpha-2 + // Example: zh-Hant-TW, en-HK, zh-Hant-CN + // + // It is similar to RFC4646 (or actually the same), + // but seems to be limited to language, script, region + // Compute each locale with its country code. - // So this will return an array containing both - // `de-DE` and `de` locales. - locales.forEach(function(locale){ - countryCode = locale.split("-")[0]; + // So this will return an array containing + // `de-DE` and `de` + // or + // `zh-hans-tw`, `zh-hans`, `zh` + // locales. + locales.forEach(function(locale) { + var localeParts = locale.split("-"); + var firstFallback = null; + var secondFallback = null; + if (localeParts.length === 3) { + firstFallback = [ + localeParts[0], + localeParts[1] + ].join("-"); + secondFallback = localeParts[0]; + } + else if (localeParts.length === 2) { + firstFallback = localeParts[0]; + } - if (!~list.indexOf(locale)) { + if (list.indexOf(locale) === -1) { list.push(locale); } - if (I18n.fallbacks && countryCode && countryCode !== locale && !~list.indexOf(countryCode)) { - list.push(countryCode); + if (! I18n.fallbacks) { + return; } + + [ + firstFallback, + secondFallback + ].forEach(function(nullableFallbackLocale) { + // We don't want null values + if (typeof nullableFallbackLocale === "undefined") { return; } + if (nullableFallbackLocale === null) { return; } + // We don't want duplicate values + // + // Comparing with `locale` first is faster than + // checking whether value's presence in the list + if (nullableFallbackLocale === locale) { return; } + if (list.indexOf(nullableFallbackLocale) !== -1) { return; } + + list.push(nullableFallbackLocale); + }); }); // No locales set? English it is. @@ -300,34 +379,32 @@ }; // Check if value is different than undefined and null; - I18n.isSet = function(value) { - return value !== undefined && value !== null; - }; + I18n.isSet = isSet; // Find and process the translation using the provided scope and options. // This is used internally by some functions and should not be used as an // public API. I18n.lookup = function(scope, options) { - options = this.prepareOptions(options); + options = options || {} var locales = this.locales.get(options.locale).slice() , requestedLocale = locales[0] , locale , scopes + , fullScope , translations ; - scope = this.getFullScope(scope, options); + fullScope = this.getFullScope(scope, options); while (locales.length) { locale = locales.shift(); - scopes = scope.split(this.defaultSeparator); + scopes = fullScope.split(this.defaultSeparator); translations = this.translations[locale]; if (!translations) { continue; } - while (scopes.length) { translations = translations[scopes.shift()]; @@ -341,9 +418,78 @@ } } - if (this.isSet(options.defaultValue)) { - return options.defaultValue; + if (isSet(options.defaultValue)) { + return lazyEvaluate(options.defaultValue, scope); + } + }; + + // lookup pluralization rule key into translations + I18n.pluralizationLookupWithoutFallback = function(count, locale, translations) { + var pluralizer = this.pluralization.get(locale) + , pluralizerKeys = pluralizer(count) + , pluralizerKey + , message; + + if (isObject(translations)) { + while (pluralizerKeys.length) { + pluralizerKey = pluralizerKeys.shift(); + if (isSet(translations[pluralizerKey])) { + message = translations[pluralizerKey]; + break; + } + } } + + return message; + }; + + // Lookup dedicated to pluralization + I18n.pluralizationLookup = function(count, scope, options) { + options = options || {} + var locales = this.locales.get(options.locale).slice() + , requestedLocale = locales[0] + , locale + , scopes + , translations + , message + ; + scope = this.getFullScope(scope, options); + + while (locales.length) { + locale = locales.shift(); + scopes = scope.split(this.defaultSeparator); + translations = this.translations[locale]; + + if (!translations) { + continue; + } + + while (scopes.length) { + translations = translations[scopes.shift()]; + if (!isObject(translations)) { + break; + } + if (scopes.length == 0) { + message = this.pluralizationLookupWithoutFallback(count, locale, translations); + } + } + if (message != null && message != undefined) { + break; + } + } + + if (message == null || message == undefined) { + if (isSet(options.defaultValue)) { + if (isObject(options.defaultValue)) { + message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue); + } else { + message = options.defaultValue; + } + translations = options.defaultValue; + } + } + + return { message: message, translations: translations }; }; // Rails changed the way the meridian is stored. @@ -388,7 +534,7 @@ continue; } - if (this.isSet(options[attr])) { + if (isSet(options[attr])) { continue; } @@ -407,15 +553,14 @@ // Defaults should be an array of hashes containing either // fallback scopes or messages - if (this.isSet(options.defaults)) { + if (isSet(options.defaults)) { translationOptions = translationOptions.concat(options.defaults); } // Maintain support for defaultValue. Since it is always a message // insert it in to the translation options as such. - if (this.isSet(options.defaultValue)) { + if (isSet(options.defaultValue)) { translationOptions.push({ message: options.defaultValue }); - delete options.defaultValue; } return translationOptions; @@ -423,19 +568,23 @@ // Translate the given scope with the provided options. I18n.translate = function(scope, options) { - options = this.prepareOptions(options); + options = options || {} var translationOptions = this.createTranslationOptions(scope, options); var translation; + + var optionsWithoutDefault = this.prepareOptions(options) + delete optionsWithoutDefault.defaultValue + // Iterate through the translation options until a translation // or message is found. var translationFound = translationOptions.some(function(translationOption) { - if (this.isSet(translationOption.scope)) { - translation = this.lookup(translationOption.scope, options); - } else if (this.isSet(translationOption.message)) { - translation = translationOption.message; + if (isSet(translationOption.scope)) { + translation = this.lookup(translationOption.scope, optionsWithoutDefault); + } else if (isSet(translationOption.message)) { + translation = lazyEvaluate(translationOption.message, scope); } if (translation !== undefined && translation !== null) { @@ -449,8 +598,8 @@ if (typeof(translation) === "string") { translation = this.interpolate(translation, options); - } else if (isObject(translation) && this.isSet(options.count)) { - translation = this.pluralize(options.count, translation, options); + } else if (isObject(translation) && isSet(options.count)) { + translation = this.pluralize(options.count, scope, options); } return translation; @@ -458,7 +607,7 @@ // This function interpolates the all variables in the given message. I18n.interpolate = function(message, options) { - options = this.prepareOptions(options); + options = options || {} var matches = message.match(this.placeholder) , placeholder , value @@ -476,7 +625,7 @@ placeholder = matches.shift(); name = placeholder.replace(this.placeholder, "$1"); - if (this.isSet(options[name])) { + if (isSet(options[name])) { value = options[name].toString().replace(/\$/gm, "_#$#_"); } else if (name in options) { value = this.nullPlaceholder(placeholder, message, options); @@ -495,33 +644,21 @@ // The pluralized translation may have other placeholders, // which will be retrieved from `options`. I18n.pluralize = function(count, scope, options) { - options = this.prepareOptions(options); - var translations, pluralizer, keys, key, message; + options = this.prepareOptions({count: String(count)}, options) + var pluralizer, message, result; - if (isObject(scope)) { - translations = scope; - } else { - translations = this.lookup(scope, options); - } - - if (!translations) { + result = this.pluralizationLookup(count, scope, options); + if (result.translations == undefined || result.translations == null) { return this.missingTranslation(scope, options); } - pluralizer = this.pluralization.get(options.locale); - keys = pluralizer(count); - - while (keys.length) { - key = keys.shift(); - - if (this.isSet(translations[key])) { - message = translations[key]; - break; - } + if (result.message != undefined && result.message != null) { + return this.interpolate(result.message, options); + } + else { + pluralizer = this.pluralization.get(options.locale); + return this.missingTranslation(scope + '.' + pluralizer(count)[0], options); } - - options.count = String(count); - return this.interpolate(message, options); }; // Return a missing translation message for the given parameters. @@ -536,8 +673,9 @@ function(match, p1, p2) {return p1 + ' ' + p2.toLowerCase()} ); } + var localeForTranslation = (options != null && options.locale != null) ? options.locale : this.currentLocale(); var fullScope = this.getFullScope(scope, options); - var fullScopeWithLocale = [this.currentLocale(), fullScope].join(this.defaultSeparator); + var fullScopeWithLocale = [localeForTranslation, fullScope].join(this.defaultSeparator); return '[missing "' + fullScopeWithLocale + '" translation]'; }; @@ -772,6 +910,10 @@ options = this.prepareOptions(options, DATE); + if (isNaN(date.getTime())) { + throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.'); + } + var weekDay = date.getDay() , day = date.getDate() , year = date.getFullYear() @@ -882,10 +1024,10 @@ }; I18n.getFullScope = function(scope, options) { - options = this.prepareOptions(options); + options = options || {} // Deal with the scope as an array. - if (scope.constructor === Array) { + if (isArray(scope)) { scope = scope.join(this.defaultSeparator); } @@ -910,19 +1052,10 @@ * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8 */ I18n.extend = function ( obj1, obj2 ) { - var extended = {}; - var prop; - for (prop in obj1) { - if (Object.prototype.hasOwnProperty.call(obj1, prop)) { - extended[prop] = obj1[prop]; - } - } - for (prop in obj2) { - if (Object.prototype.hasOwnProperty.call(obj2, prop)) { - extended[prop] = obj2[prop]; - } + if (typeof(obj1) === "undefined" && typeof(obj2) === "undefined") { + return {}; } - return extended; + return merge(obj1, obj2); }; // Set aliases, so we can save some typing.